MnQInvestmentDevelopment/MnQInvestment/04_Tutorials/TrailingStopTutorial.mq5

44 lines
1.2 KiB
MQL5
Raw Permalink Normal View History

2025-05-30 15:08:44 +02:00
#property copyright "Copyright 2023, M & Q Investment Group"
#property link "https://www.mql5.com"
#property version "1.00"
#include <trade/trade.mqh>
CTrade trade;
double LiveTP;
void OnTick()
{
double Ask = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
double TradeSL = Ask - 0.00015;
double TradeTP = Ask + 0.0002;
if (PositionsTotal()<1){
Print("Ask: ",Ask);
trade.Buy(0.10,_Symbol,Ask,TradeSL,TradeTP);
LiveTP = TradeTP;
}
if(PositionsTotal()> 0){CheckTrailingstop(Ask,LiveTP);}
}
void CheckTrailingstop(double Ask, double TP){
TP = LiveTP;
for(int i = PositionsTotal()-1; i >= 0; i--){
string symbol = PositionGetSymbol(i);
if(_Symbol == symbol){
ulong PositionTicket = PositionGetInteger(POSITION_TICKET);
double PositionOpenprice = PositionGetDouble(POSITION_PRICE_OPEN);
double CurrentSL = PositionGetDouble(POSITION_SL);
double SL = NormalizeDouble(Ask - 0.00015,_Digits);
if(CurrentSL < SL){
trade.PositionModify(PositionTicket,(CurrentSL + 0.00005),TP);
}
}
}
}