Codice per rientre al contrario dopo stop
Codice per rientre al contrario dopo stop
buongiorno a tutti, torno a rompere le scatole sul foro per sapere se c'è una formula di codice che si può aggiungere in fondo alle funzioni EA per far rientrare immediatamente a mercato l'expert dopo che lo stop loss è stato colpito, ho cercato in rete ma non sono riuscito a trovare nulla
Re: Codice per rientre al contrario dopo stop
Ovviamente il rientro dopo lo stop loss dovrebbe essere in direzione contraria all'operazione aperta, di seguito attacco il codice del mio EA "evoluto" dopo i vostri consigli
Re: Codice per rientre al contrario dopo stop
qui di seguito il codice del mio EA, spero che sia accettabile, non essendo un programmatore ho fatto del mio meglio, in back test lavora, ma senza rientro a mercato immediato dopo uno stop fa fatica a tirare su profitto
//+------------------------------------------------------------------+
//| str.mq4 |
//| [email protected] |
//| Mandalari Stefano |
//+------------------------------------------------------------------+
#property copyright "[email protected]"
#property link "Mandalari Stefano"
#property version "1.00"
#property strict
extern int MagicNumber=10001;
extern double Lots =0.1;
extern double StopLoss=50;
extern double TakeProfit=50;
extern int TrailingStop=50;
extern int Slippage=3;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if( TotalOrdersCount()==0 )
{
int result=0;
if((iMA(NULL,0,11,0,MODE_LWMA,PRICE_HIGH,0)>iMA(NULL,0,11,0,MODE_SMMA,PRICE_HIGH,0))&&(Open[22]>iMA(NULL,0,77,0,MODE_SMMA,PRICE_HIGH,0))&&(Close[55]>iMA(NULL,0,22,0,MODE_SMMA,PRICE_HIGH,0))) // Here is your open buy rule
{
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Bombing",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
if((iMA(NULL,0,11,0,MODE_LWMA,PRICE_LOW,0)<iMA(NULL,0,11,0,MODE_SMMA,PRICE_LOW,0))&&(Open[22]<iMA(NULL,0,77,0,MODE_SMMA,PRICE_LOW,0))&&(Close[55]<iMA(NULL,0,22,0,MODE_SMMA,PRICE_LOW,0))) // Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Bombing",MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
}
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;
}
return (result);
}
//+------------------------------------------------------------------+
//| str.mq4 |
//| [email protected] |
//| Mandalari Stefano |
//+------------------------------------------------------------------+
#property copyright "[email protected]"
#property link "Mandalari Stefano"
#property version "1.00"
#property strict
extern int MagicNumber=10001;
extern double Lots =0.1;
extern double StopLoss=50;
extern double TakeProfit=50;
extern int TrailingStop=50;
extern int Slippage=3;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if( TotalOrdersCount()==0 )
{
int result=0;
if((iMA(NULL,0,11,0,MODE_LWMA,PRICE_HIGH,0)>iMA(NULL,0,11,0,MODE_SMMA,PRICE_HIGH,0))&&(Open[22]>iMA(NULL,0,77,0,MODE_SMMA,PRICE_HIGH,0))&&(Close[55]>iMA(NULL,0,22,0,MODE_SMMA,PRICE_HIGH,0))) // Here is your open buy rule
{
result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"Bombing",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
if((iMA(NULL,0,11,0,MODE_LWMA,PRICE_LOW,0)<iMA(NULL,0,11,0,MODE_SMMA,PRICE_LOW,0))&&(Open[22]<iMA(NULL,0,77,0,MODE_SMMA,PRICE_LOW,0))&&(Close[55]<iMA(NULL,0,22,0,MODE_SMMA,PRICE_LOW,0))) // Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,"Bombing",MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);
}
return(0);
}
}
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{
if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
int TotalOrdersCount()
{
int result=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;
}
return (result);
}
Re: Codice per rientre al contrario dopo stop
potresti piazzare un ordine limit nel livello dello SL
Re: Codice per rientre al contrario dopo stop
ehmmm si ok quando sono davanti al pc ovviamente posso piazzare un pending al contrario manualmente e ok, fin li non c'è problema, mi sarebbe piaciuto automatizzare semplicemente senza fare in manuale, metti che sono fuori, se prende lo stop non riesco a gestirlo, la notte dormo (in teoria) ehehhehehe quindi non mi spiacerebbe attacargli un codice che semplicemente lo fa rientrare al contrario, e poi almeno non ci smeno soldi in reale ma posso testarlo in back test
Re: Codice per rientre al contrario dopo stop
non sono un coder, pensavo che fosse piu' semplice programmare l'ea con inserito oltre lo SL un pendente limit al solito livello di prezzo,
ma posso anche sbagliarmi
ma posso anche sbagliarmi
Re: Codice per rientre al contrario dopo stop
Se si riuscisse a drigli al sistema solamente quando prende lo stop loss e non in altre circostanze di aprire un ordine in senso contrario subito sicuramente le prestazione dell'EA sarebbero molto migliori
- Allegati
-
- Cattura2.JPG (80.08 KiB) Visto 816 volte
-
- Cattura1.JPG (88.38 KiB) Visto 816 volte
-
- Messaggi: 196
- Iscritto il: 12/10/2016, 17:44
Re: Codice per rientre al contrario dopo stop
Perché hai creato un sistema condizionale per inserire stop e take, non potevi metterlo direttamente all apertura? Ma se l ordine non lo apre tu come pensi di scoprirlo senza aggiungere degli allert di controllo? Per la tua domanda hanno ragione i ragazzi che ti dicono di mettere un pendente, perché si fa proprio così!!!!
Una fenice risorge dalla cenere torna al fuoco per quanto tu la possa uccidere.
fb:
https://www.facebook.com/eamt4forex/?mo ... _todo_tour
myfxbook:
myfxbook.com/members/TradingForexclub/sitecash-trading-1/3552549
fb:
https://www.facebook.com/eamt4forex/?mo ... _todo_tour
myfxbook:
myfxbook.com/members/TradingForexclub/sitecash-trading-1/3552549
Re: Codice per rientre al contrario dopo stop
ah ok, bhe scusate non essendo un programmatore chiedo perché devo imparare tutto qui, solo che non ho idea di come dire al sistema di mettere un pendente al contrario sullo stop rispetto alla posizione aperta
-
- Messaggi: 196
- Iscritto il: 12/10/2016, 17:44
Re: Codice per rientre al contrario dopo stop
Per quale motivo credi che mettendo un pendente le performance migliorano?
Una fenice risorge dalla cenere torna al fuoco per quanto tu la possa uccidere.
fb:
https://www.facebook.com/eamt4forex/?mo ... _todo_tour
myfxbook:
myfxbook.com/members/TradingForexclub/sitecash-trading-1/3552549
fb:
https://www.facebook.com/eamt4forex/?mo ... _todo_tour
myfxbook:
myfxbook.com/members/TradingForexclub/sitecash-trading-1/3552549
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite