[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 291
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho raccolto buoni parametri solo bisogno di aggiungere che imposta un sacco di martingala (2 più quando si perde).O darmi un indizio circa l'advisor che sarà solo raddoppiare il lotto senza attendere un pareggio a 2 eseguire (se disponibile).Ecco un advisor:
//+------------------------------------------------------------------+
|| Fractals.mq4
//| TO |
//| http://www.forex-tradexperts-to.narod.ru |
//+------------------------------------------------------------------+
#proprietà copyright "TO"
#proprietà link "http://www.forex-tradexperts-to.narod.ru"
#include <WinUser32.mqh>.
extern int TP_Fract_3=300;
extern int SL_Fract_3=200;
extern int TP_Fract_11=500;
extern int SL_Fract_11=300;
extern bool buy_Fract_3=true;
extern bool sell_Fract_3=true;
extern bool buy_Fract_11=true;
extern bool sell_Fract_11=true;
extern bool podtvergdenie=false;
extern int tofract=10;
extern double lots=0.1;
extern int ID = 5452;
stringa com;
doppia diffusione;
int init()
{
com=DoubleToStr(ID,0);
spread=MarketInfo(Symbol(),MODE_SPREAD)*Point;
ritorno(0);
}
int deinit()
{
ritorno(0);
}
datetime t1,t2=0;
bool order(double price,int type,string c,int m)
{
int i;
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==c && OrderMagicNumber()==m && OrderOpenPrice()==prezzo && OrderType()==tipo)return(false);
if(i==0)return(true);
}
se(OrdiniTotali()==0)return(true);
}
int start()
{
int i,ret;
t1=Time[0];
se(t1!=t2)
{
int fract_buy_3=iHighest(Symbol(),Period(),MODE_HIGH,5,1);
int fract_sell_3=iLowest(Symbol(),Period(),MODE_LOW,5,1);
int fract_buy_11=iHighest(Symbol(),Period(),MODE_HIGH,21,1);
int fract_sell_11=iLowest(Symbol(),Period(),MODE_LOW,21,1);
if( fract_buy_3==3 && buy_Fract_3==true)
{
if(OrdersTotal()==0)if(order(High[fract_buy_3]+tofract*Point+spread,4,com,5))OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,5);
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==5 && OrderType()==4)
{
OrderModify(OrderTicket(),High[fract_buy_3]+tofract*Point+spread, High[fract_buy_3]+tofract*Point-SL_Fract_3*Point, High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,0,Blue);
pausa;
}
if(i==0)if(order(High[fract_buy_3]+tofract*Point+spread,4,com,5))
{
se(podtvergdenie)
{
ret=MessageBox("Signal at "+Symbol()+" H1 BUYSTOP "+"{Set Order?", "Signal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,5);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,com,5);
}
}
}
if( fract_sell_3==3 && sell_Fract_3==true)
{
if(OrdersTotal()==0)if(order(Low[fract_sell_3]-tofract*Point,5,com,5))OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,com,5);
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==5 && OrderType()==5)
{
OrderModify(OrderTicket(),Low[fract_sell_3]-tofract*Point,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,0,Red);
pausa;
}
if(i==0)if(order(Low[fract_sell_3]-tofract*Point,5,com,5))
{
se(podtvergdenie)
{
ret=MessageBox("Signal on "+Symbol()+"H1 SELLSTOP "+"{Set Order?", "Signal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,5);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point*Point,com,5);
}
}
}
if( fract_buy_11==11 && buy_Fract_11==true)
{
if(OrdersTotal()==0)if(order(High[fract_buy_11]+tofract*Point+spread,4,com,21))orderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,21);
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==21 && OrderType()==4)
{
OrderModify(OrderTicket(),High[fract_buy_11]+tofract*Point+spread, High[fract_buy_11]+tofract*Point-SL_Fract_11*Point, High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,0,Blue);
pausa;
}
if(i==0)if(order(High[fract_buy_11]+tofract*Point+spread,4,com,21))
{
se(podtvergdenie)
{
ret=MessageBox("Signal on "+Symbol()+"H4 BUYSTOP "+"{Set Order?", "Signal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_BUYSTOP,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,21);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,com,21);
}
}
}
if( fract_sell_11==11 && sell_Fract_11==true)
{
if(OrdersTotal()==0)if(order(Low[fract_sell_11]-tofract*Point,5,com,21))orderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,com,21);
for(i=OrdiniTotali()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderComment()==com && OrderMagicNumber()==21 && OrderType()==5)
{
OrderModify(OrderTicket(),Low[fract_sell_11]-tofract*Point,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,0,Red);
pausa;
}
if(i==0)if(order(Low[fract_sell_11]-tofract*Point,5,com,21))
{
se(podtvergdenie)
{
ret=MessageBox("Signal on "+Symbol()+"H4 BUYSTOP "+"{Set Order?", "Signal", MB_YESNO|MB_ICONQUESTION);
if(ret==IDYES)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,21);
}
if(!podtvergdenie)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point*Point,com,21);
}
}
}
t2=Tempo[0];
}
ritorno(0);
}
Non sono bravo a scrivere in russo, scusate!
Non sono bravo a scrivere in russo, mi dispiace!
Ditemi chi può aiutarmi con il blocco Klimov, il problema è che non restituisce il valore dell'ultimo chiuso, ma il valore dell'ultimo chiuso dalla condizione
quindi a 2 condizioni
restituisce entrambi i valori True,
come far tornare solo l'ultimo ordine chiuso e non l'ultimo da un condizionale,
Ecco il codice che ho aggiunto controllo per lotti per mia comodità
Ditemi chi può aiutarmi con il blocco Klimov, il problema è che non restituisce il valore dell'ultimo chiuso, ma il valore dell'ultimo chiuso dalla condizione
quindi a 2 condizioni
restituisce entrambi i valori True,
come far tornare solo l'ultimo ordine chiuso e non l'ultimo da un condizionale,
Ho aggiunto un controllo del lotto al codice per mia comodità
Avete aggiunto il controllo dei lotti a questa funzione? Ora controllano le ultime posizioni chiuse con il lotto passato, e il lotto è probabilmente sempre uguale a zero, o un intero. La variabile ll deve essere di tipo double. Perché abbiamo bisogno di controllare il lotto qui?
Tu scrivi quello che vuoi ottenere e loro te lo diranno :)
Sì, e perché il lotto è un int? Il lotto è sempre stato doppio.
Potresti fare così, quando ti rimane un ordine, determinare quale ordine è rimasto e cercare quello opposto.
Dimmi chi può aiutarti con il blocco Klimov...
Controlla i lotti nella funzione aggiunta da te? Ora controllano le ultime posizioni chiuse con il lotto passato, e il lotto è probabilmente sempre uguale a zero, o un intero. La variabile ll deve essere di tipo double. E perché abbiamo bisogno di controllare il lotto qui?
Tu scrivi quello che vuoi ottenere e loro te lo diranno :)
Ho già ottenuto tutto, ma c'è un bug, ad un certo momento appare un ordine che non mi serve,
Ho provato a cambiarlo in int, originariamente era double, ma poi l'ho cercato e ho dimenticato di restituirlo, e se uso una funzione separata senza controllo del lotto, il risultato non cambia, quindi forse non l'ho controllato correttamente, aiutatemi a capire cosa c'è di sbagliato in questo bug
Ecco come appare la richiesta
Sì, e perché il lotto è un int? Il lotto è sempre stato doppio.
Potresti fare così, quando ti rimane un ordine, determinare quale ordine è rimasto e cercare quello opposto.
non è così semplice perché le condizioni di apertura possono essere 2 sulla vendita, e allora questa ricerca non troverà nulla
Non duplicare i post in thread diversi, è una cattiva forma.
Mi dispiace, cercherò meglio di ricordarmi di cancellare i post identici da thread diversi,