PaPP v2: dynamic TP/SL ogni barra (median corrente)
This commit is contained in:
@@ -119,13 +119,41 @@ void TrailAll()
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
void OnTick()
|
||||
void UpdateTPSL(double median)
|
||||
{
|
||||
TrailAll();
|
||||
double point = SymbolInfoDouble(_Symbol,SYMBOL_POINT);
|
||||
CTrade trade;
|
||||
for(int i=PositionsTotal()-1; i>=0; i--)
|
||||
{
|
||||
ulong t=PositionGetTicket(i);
|
||||
if(t<=0 || !PositionSelectByTicket(t)) continue;
|
||||
if(PositionGetInteger(POSITION_MAGIC)!=Magic || PositionGetString(POSITION_SYMBOL)!=_Symbol) continue;
|
||||
|
||||
datetime curBar = iTime(_Symbol,_Period,0);
|
||||
if(curBar==lastBar) return;
|
||||
lastBar = curBar;
|
||||
bool isBuy = PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY;
|
||||
double entry = PositionGetDouble(POSITION_PRICE_OPEN);
|
||||
double currSL = PositionGetDouble(POSITION_SL);
|
||||
double currTP = PositionGetDouble(POSITION_TP);
|
||||
double tpDist = MathAbs(median-entry);
|
||||
if(tpDist<point) continue;
|
||||
|
||||
double newTP = NormalizeDouble(median,_Digits);
|
||||
double newSL = NormalizeDouble(isBuy ? entry-tpDist : entry+tpDist,_Digits);
|
||||
if(MathAbs(newTP-currTP)<=point && MathAbs(newSL-currSL)<=point) continue;
|
||||
|
||||
if(DebugPrint) Print(">>> UPDATE t",t," TP=",DoubleToString(newTP,_Digits),
|
||||
" SL=",DoubleToString(newSL,_Digits));
|
||||
trade.PositionModify(t,newSL,newTP);
|
||||
}
|
||||
}
|
||||
|
||||
//+------------------------------------------------------------------+
|
||||
void OnTick()
|
||||
{
|
||||
TrailAll();
|
||||
|
||||
datetime curBar = iTime(_Symbol,_Period,0);
|
||||
if(curBar==lastBar) return;
|
||||
lastBar = curBar;
|
||||
|
||||
double ask = SymbolInfoDouble(_Symbol,SYMBOL_ASK);
|
||||
double bid = SymbolInfoDouble(_Symbol,SYMBOL_BID);
|
||||
@@ -138,6 +166,9 @@ void OnTick()
|
||||
|
||||
double median = sum/valid;
|
||||
|
||||
//--- Update TP/SL per tutte le posizioni con la mediana corrente
|
||||
UpdateTPSL(median);
|
||||
|
||||
//--- Dispersione MA = banda strutturale del cluster
|
||||
int dc=0; double ds=0;
|
||||
for(int m=0;m<8;m++)
|
||||
|
||||
Reference in New Issue
Block a user