44 lines
No EOL
1.2 KiB
MQL5
44 lines
No EOL
1.2 KiB
MQL5
#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);
|
|
}
|
|
}
|
|
}
|
|
} |