Codice per rientre al contrario dopo stop

Sezione dedicata a metatrader (ed altre piattaforme) ed al suo linguaggio di programmazione per il trading automatico
steao81
Messaggi: 58
Iscritto il: 04/11/2016, 0:14

Codice per rientre al contrario dopo stop

Messaggio da steao81 »

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
steao81
Messaggi: 58
Iscritto il: 04/11/2016, 0:14

Re: Codice per rientre al contrario dopo stop

Messaggio da steao81 »

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
steao81
Messaggi: 58
Iscritto il: 04/11/2016, 0:14

Re: Codice per rientre al contrario dopo stop

Messaggio da steao81 »

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);
}
gravio
Messaggi: 605
Iscritto il: 26/07/2015, 13:26

Re: Codice per rientre al contrario dopo stop

Messaggio da gravio »

potresti piazzare un ordine limit nel livello dello SL
steao81
Messaggi: 58
Iscritto il: 04/11/2016, 0:14

Re: Codice per rientre al contrario dopo stop

Messaggio da steao81 »

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
gravio
Messaggi: 605
Iscritto il: 26/07/2015, 13:26

Re: Codice per rientre al contrario dopo stop

Messaggio da gravio »

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
steao81
Messaggi: 58
Iscritto il: 04/11/2016, 0:14

Re: Codice per rientre al contrario dopo stop

Messaggio da steao81 »

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
Cattura2.JPG (80.08 KiB) Visto 816 volte
Cattura1.JPG
Cattura1.JPG (88.38 KiB) Visto 816 volte
IntoTheWild1990
Messaggi: 196
Iscritto il: 12/10/2016, 17:44

Re: Codice per rientre al contrario dopo stop

Messaggio da IntoTheWild1990 »

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
steao81
Messaggi: 58
Iscritto il: 04/11/2016, 0:14

Re: Codice per rientre al contrario dopo stop

Messaggio da steao81 »

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
IntoTheWild1990
Messaggi: 196
Iscritto il: 12/10/2016, 17:44

Re: Codice per rientre al contrario dopo stop

Messaggio da IntoTheWild1990 »

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
Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite