60 行
5.1 KiB
MQL5
60 行
5.1 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| TrailingBySAR_03.mq5 |
|
|
//| Copyright 2024, MetaQuotes Ltd. |
|
|
//| https://www.mql5.com |
|
|
//+------------------------------------------------------------------+
|
|
#property copyright "Copyright 2024, MetaQuotes Ltd."
|
|
#property link "https://www.mql5.com"
|
|
#property version "1.00"
|
|
|
|
#define SAR_DATA_INDEX 1 // бар, с которого получаем данные Parabolic SAR
|
|
|
|
#include "TrailingsFunc.mqh"
|
|
|
|
//--- input parameters
|
|
input ENUM_TIMEFRAMES InpTimeframeSAR = PERIOD_CURRENT; // Parabolic SAR Timeframe
|
|
input double InpStepSAR = 0.02; // Parabolic SAR Step
|
|
input double InpMaximumSAR = 0.2; // Parabolic SAR Maximum
|
|
input long InpMagic = 123; // Expert Magic Number
|
|
|
|
//--- global variables
|
|
int ExtHandleSAR=INVALID_HANDLE; // хэндл Parabolic SAR
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Expert initialization function |
|
|
//+------------------------------------------------------------------+
|
|
int OnInit()
|
|
{
|
|
//--- создаём хендл Parabolic SAR
|
|
ExtHandleSAR=CreateSAR(Symbol(), InpTimeframeSAR, InpStepSAR, InpMaximumSAR);
|
|
|
|
//--- при ошибке создания индикатора выходим с ошибкой из OnInit
|
|
if(ExtHandleSAR==INVALID_HANDLE)
|
|
return(INIT_FAILED);
|
|
|
|
//--- успешно
|
|
return(INIT_SUCCEEDED);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| Expert tick function |
|
|
//+------------------------------------------------------------------+
|
|
void OnTick()
|
|
{
|
|
//--- если не новый бар - уходим из обработчика
|
|
if(!IsNewBar())
|
|
return;
|
|
|
|
//--- тралим стопы позиций по Parabolic SAR
|
|
TrailingByDataInd(ExtHandleSAR, SAR_DATA_INDEX, InpMagic);
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//| TradeTransaction function |
|
|
//+------------------------------------------------------------------+
|
|
void OnTradeTransaction(const MqlTradeTransaction& trans,
|
|
const MqlTradeRequest& request,
|
|
const MqlTradeResult& result)
|
|
{
|
|
if(trans.type==TRADE_TRANSACTION_DEAL_ADD)
|
|
TrailingByDataInd(ExtHandleSAR, SAR_DATA_INDEX, InpMagic);
|
|
}
|
|
//+------------------------------------------------------------------+
|