Aiuto per la codifica - pagina 16

 
nontan:
Ciao, geniale codificatore e persone gentili:D

Ora sto sviluppando un semplice EA ma non riesco a capire le seguenti condizioni.

Se la posizione precedente è chiusa da Take Profit, fai una nuova entrata che imposta 20 pips da s/l e t/p al prossimo prezzo aperto.(su grafico 5M)

Ho provato a scriverne una.

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

//L'ultima posizione era un ordine istantaneo OP_BUY o OP_SELL

{

if(OrderClosePrice() == OrderTakeProfit())

// SE il prezzo di chiusura è uguale al prezzo di take profit

{

if(OrderType() == OP_BUY)

//Il tipo di ordine di quell'ordine è comprare

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC); // Lots e altre variabili sono definite da me

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

}

Ho provato molte volte con Strategy tester, ma non posso agire come spero

.

Qualcuno mi dia un aiuto da questa domanda!

[Ciao,

Puoi allegare l'intero codice dell'EA?

Grazie,

Grzesiek[/lang]

 

...

Prova a usare questo in confronto

if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))

forse questo aiuta

nontan:
Ciao, geniale codificatore e persone gentili:D

Ora sto sviluppando un semplice EA ma non riesco a capire le seguenti condizioni.

Se la posizione precedente è chiusa da Take Profit, fai una nuova entrata che imposta 20 pips da s/l e t/p al prossimo prezzo aperto.(su grafico 5M)

Ho provato a scriverne una.

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

//L'ultima posizione era un ordine istantaneo OP_BUY o OP_SELL

{

if(OrderClosePrice() == OrderTakeProfit())

// SE il prezzo di chiusura è uguale al prezzo di take profit

{

if(OrderType() == OP_BUY)

//Il tipo di ordine di quell'ordine è comprare

{

OrderSend(OP_BUY,Lots,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC); // Lots e altre variabili sono definite da me

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

}

Ho provato molte volte con Strategy tester, ma non posso agire come spero

.

Qualcuno mi dia un aiuto da questa domanda!

 

Grazie ragazzi.

Ho provato a inserire NormarizeDouble ma non funziona.

Potreste insegnarmi perché non funziona?

---------------------------------------------------

#include

#define MAGIC 20120101

#define COMMENT "Riding9"

extern double Lots = 0.1;

extern int Slippage = 3;

extern int SLpips = 20;

extern int TPpips = 50;

extern int StartTime = 1;

extern int FinishTime = 23;

extern int MAPeriod = 48;

int EntrySignal(int magic)

{

double pos = MyCurrentOrders(MY_OPENPOS, magic);

double Ma9 = iMA(NULL, 0, MAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

int ret = 0;

if((pos <= 0) && (Close[3] Open[2] && Open[2] >= Ma9) || (Open[2] Ma9)) && (Close[1] > Open[1] && Open[1] > Ma9)) ret = 1;

else if((pos <= 0) && (Open[3] Ma9) && (Close[2] Ma9) && (Close[1] > Open[1] && Close[1] > Ma9)) ret = 1;

if((pos >= 0) && (Close[3] >= Ma9) && ((Close[2] < Open[2] && Open[2] Ma9 && Close[2] < Ma9)) && (Close[1] < Open[1] && Open[1] < Ma9)) ret = -1;//

else if((pos >= 0) && (Open[3] > Ma9 && Close[3] Open[2] && Open[2] < Ma9) && (Close[1] < Open[1] && Close[1] < Ma9)) ret = -1;

return(ret);

}

bool MyOrderSendSL(int type, double lots, double price, int slippage, int slpips, int tppips, string comment, int magic)

{

int mult=1;

if(Digits == 3 || Digits == 5) mult=10;

slippage *= mult;

if(type==OP_SELL || type==OP_SELLLIMIT || type==OP_SELLSTOP) mult *= -1;

doppio sl=0, tp=0;

if(slpips > 0) sl = price-slpips*Point*mult;

if(tppips > 0) tp = prezzo+tppips*Point*mult;

return(MyOrderSend(type, lots, price, slippage, sl, tp, comment, magic));

}

int start()

{

if(Hour() >= StartTime && Hour() < FinishTime)

{

int sig_entry = EntrySignal(MAGIC);

if(sig_entry > 0)

{

MyOrderClose(Slippage, MAGIC);

MyOrderSendSL(OP_BUY, Lots, Ask, Slippage, SLpips,TPpips, COMMENT, MAGIC);

}

se(sig_entry < 0)

{

MyOrderClose(Slippage, MAGIC);

MyOrderSendSL(OP_SELL, Lotti, Bid, Slippage, SLpips,TPpips, COMMENTO, MAGIC);

}

if(OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

{

if (NormalizeDouble(OrderClosePrice(),Digits) == NormalizeDouble(OrderTakeProfit(),Digits))

{

if(OrderType() == OP_BUY)

{

OrderSend(OP_BUY,Lotti,Ask,Slippage,SLpips,Ask+20*Point,"",MAGIC);

}

else if(OrderType() == OP_SELL)

{

OrderSend(OP_SELL,Lots,Bid,Slippage,SLpips,Bid-20*Point,"",MAGIC);

}

}

}

return(0);

}

return(0);

}

------------------------------------------------------

Per favore insegnami il mio errore se lo scopri.

Saluti.

 

...

nontan,

Questa linea
if (OrderSelect(1,SELECT_BY_POS,MODE_HISTORY))

[/PHP]

non seleziona l'ultimo ordine chiuso ma il primo (dopo il saldo iniziale) nella coda degli ordini chiusi. Quindi, sta sempre controllando un ordine fisso invece di controllare quale è stato l'ultimo ordine e poi adattarsi ad esso. Se vuoi testare l'ultimo ordine chiuso (l'ultimo nella coda degli ordini chiusi, ma sappi che metatrader non garantisce che sia l'ultimo quando viene ordinato per data-ora di chiusura) dovresti usare questa forma di controllo
[PHP]if (OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
 

Grazie, mladen

Non ho ancora usato la funzione OrderHistoryTotal, che è adatta a questo codice.

Alla fine, ho ottenuto un codice di desiderio dopo la modifica, come risultato EA funziona per fare una nuova entrata dopo aver ottenuto TakeProfit.

Grazie per la tua azienda e tutti.

 

Ho bisogno del vostro aiuto codificatori master

ciao, per favore ho bisogno di qualcuno che mi aiuti a codificare la mia strategia

 
johnray:
ciao, per favore ho bisogno di qualcuno che mi aiuti a codificare la mia strategia

[lang=pl]Dammi solo un dettaglio

Saluti[/lang]

 

ho inviato un pm

g.pociejewski:
[lang=pl]Dammi solo un dettaglio Saluti[/lang]

grazie maestro ti ho mandato un pm... è un po' complicato

 

Codice per il refresh automatico

Sto usando un indicatore che ha bisogno di un aggiornamento costante. Sto usando un grafico a 15 minuti quindi non ha bisogno di aggiornare ogni tick, anche se questo sarebbe bello se non c'è una grande perdita di energia. Dovrebbe almeno avere un'opzione per l'intervallo di tempo tra ogni aggiornamento. In questo momento aggiorno manualmente ogni minuto o giù di lì usando la scheda "Charts" e selezionando "Refresh".

C'è un codice o un modo per aggiornare automaticamente l'indi e/o il grafico, o tramite codice aggiuntivo nell'indi o in un EA?

Grazie, el bee

 

[langtitle=fr]Indicatore originale Parabolic Sar di Wilder[/langtitle]

[lang=fr]
Ciao!

Sto cercando il SAR parabolico ORIGINALE, quiproquo di Wilder. Ho fatto il codice di questo indicatore per la piattaforma PRT, ma non so codificare in MT4.

Se qualcuno ha conoscenze nella codifica MT4, posso dare il codice tramite messaggio privato, per adattare questo nella codifica MT4.

Grazie
[/lang]
Motivazione: