Come codificare? - pagina 275

 
alvintran:
No no, non è un problema SL/TP, so che il problema, ho detto che non fa nulla, significa che sul conto demo (esecuzione istantanea o qualcosa del genere non lo so) funziona bene, ma sul conto live non funziona, non ha alcun problema, semplicemente non fa nulla.

Questo EA da me scritto, non comprare, non versione di prova, non qualsiasi limitata.

Per favore, aiutatemi!

Pubblica le citazioni qui, e sono sicuro che qualcuno ti darà l'inferno.

 
alvintran:
No no, non è un problema SL/TP, so che il problema, ho detto che non fa nulla, significa che sul conto demo (esecuzione istantanea o qualcosa del genere non lo so) funziona bene, ma sul conto live non funziona, non ha alcun problema, semplicemente non fa nulla.

Questo EA da me scritto, non comprare, non versione di prova, non qualsiasi limitata.

Per favore, aiutatemi!

Ok, ma pubblica questo EA, posso aiutarti ma ho bisogno del codice.

Grazie,

Grzesiek

 

Come ottenere una matrice di 2 dimensioni in un file e poi riportarla in un'altra matrice nel prossimo EA

Ciao!

qualcuno potrebbe aiutarmi e spiegarmi come posso ottenere un array di 2 dimensioni (cioè un doppio array[x][y] dove x=100, y=30) in un file e poi come posso recuperare i numeri da questo file in un array in un altro EA? 1 dimensione è molto più facile!

Ho trovato questo articolo: Grafici tridimensionali - uno strumento professionale di analisi del mercato - Articoli MQL4 ma non so come posso leggere il file con i numeri da questo file nel mio secondo EA...

Inoltre vorrei salvare la grande precisione dei miei numeri e stavo pensando di usare la funzione FileWriteDouble() (in binario).

Qualcuno potrebbe aiutarmi - lo apprezzo molto!

Grazie!

 
g.pociejewski:
Ok, ma pubblica questo EA, posso aiutarti ma ho bisogno del codice.

Salute,

Grzesiek

Grazie a tutti!

Come ho detto, il mio EA non ha alcun problema, so problema che hai detto, in esecuzione di mercato deve aprire pugno dopo che modificare posizione (se non mostrerà ordine (130) errore). Ma il mio EA non ha alcun problema, semplicemente non fa nulla.

Vi do una condizione prima di aprire una posizione:

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

//Aprire l'ordine di acquisto

}

Grazie Grzesiek, non posso condividere questo EA, per favore contattami su skype (duong_4sao) o yahoo (tieuthienma88), avremo un disscus.

Spero che tu possa aiutarmi. Grazie !

 
alvintran:
Grazie a tutti!

Come ho detto, il mio EA non ha alcun problema, so che il problema che hai detto, nell'esecuzione del mercato deve aprire il pugno dopo di che modificare la posizione (se non mostrerà l'ordine (130) errore). Ma il mio EA non ha alcun problema, semplicemente non fa nulla.

Vi do una condizione prima di aprire una posizione:

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

//Aprire l'ordine di acquisto

}

Grazie Grzesiek, non posso condividere questo EA, per favore contattami su skype (duong_4sao) o yahoo (tieuthienma88), avremo un disscus.

Spero che possiate aiutarmi. Grazie!

Perché stai chiedendo aiuto????

 

Broker ECN e stop loss

Sono nuovo della programmazione MQL. Per favore aiutatemi.

Sto cercando di avere uno stop loss con un ordine di mercato. Qual è il modo migliore per ottenere questo. Ho provato con ordersend ma è risultato

che i broker ECN non supportano lo stop loss con gli ordini a mercato.

Ho cercato e l'unica informazione che ho trovato è che dobbiamo prima avere un ordine pendente e poi modificare quell'ordine.

Ho provato questo e il problema è che in molti casi l'ordine pendente viene già eseguito prima dell'ordine di modifica, quindi l'ordine di modifica fallisce.

Ecco l'ordine di vendita per l'ordine di mercato:

STicket = OrderSend(Symbol(),OP_SELL,LotSize,Bid,0,0,0,null,MagicNumber,0,red);

Ecco la modifica dell'ordine:

OrderSelect(SlTicket, SELECT_BY_TICKET);

OpenPrice = OrderOpenPrice();

{ double SellStopLoss = OpenPrice - (StopLoss * UsePoint);

bool TicketMod1 = OrderModify(SellTicket ,OrderOpenPrice() , SellStopLoss , 0,0);

}

Questo metodo di stop funziona a volte e a volte l'ordine del marcatore è già stato eseguito, quindi OrderModify fallisce.

Per favore aiutatemi a realizzare un ordine stoploss per i broker ECN !!!!

 
winston99:
Sono nuovo della programmazione MQL. Per favore aiutatemi.

Sto cercando di avere uno stop loss con un ordine di mercato. Qual è il modo migliore per ottenere questo. Ho provato con ordersend ma è risultato

che i broker ECN non supportano lo stop loss con gli ordini a mercato.

Ho cercato e l'unica informazione che ho trovato è che dobbiamo prima avere un ordine pendente e poi modificare quell'ordine.

Ho provato questo e il problema è che in molti casi l'ordine pendente è già stato eseguito prima dell'ordine di modifica, quindi l'ordine di modifica fallisce.

Ecco l'ordine di vendita per l'ordine di mercato:

STicket = OrderSend(Symbol(),OP_SELL,LotSize,Bid,0,0,0,null,MagicNumber,0,red);

Ecco la modifica dell'ordine:

OrderSelect(SlTicket, SELECT_BY_TICKET);

OpenPrice = OrderOpenPrice();

{ double SellStopLoss = OpenPrice - (StopLoss * UsePoint);

bool TicketMod1 = OrderModify(SellTicket ,OrderOpenPrice() , SellStopLoss , 0,0);

}

Questo metodo di stop funziona a volte e a volte l'ordine del marcatore è già stato eseguito, quindi OrderModify fallisce.

Per favore aiutatemi a realizzare un ordine stoploss per i broker ECN !!!!

L'unico modo per ottenere lo stop loss nei broker ECN è quello di inviare un ordine senza stop e modificarlo.

Io uso:

ticket=OrderSend(Symbol(),OP_SELL,lots,Bid, slippage,0,0,comment,magic);

OrderSelect(ticket,SELECT_BY_TICKET);

OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +StopLoss*Point, StopLoss),sltpValue(Bid- TakeProfit*Point,TakeProfit),0);

e non ho alcun problema (sltp ci dà il valore Sl/TP).

 
g.pociejewski:
L'unico modo per ottenere lo stop loss nei broker ECN è inviare un ordine senza stop e modificarlo.

Io uso:

ticket=OrderSend(Symbol(),OP_SELL,lots,Bid, slippage,0,0,comment,magic);

OrderSelect(ticket,SELECT_BY_TICKET);

OrderModify(ticket,OrderOpenPrice(),sltpValue(Ask +StopLoss*Point, StopLoss),sltpValue(Bid- TakeProfit*Point,TakeProfit),0);

e non avere problemi (sltp ci dà il valore Sl/TP).

Come si calcola lo slippage?

Sto passando 0 per questo, forse è per questo che è un problema.

 

aiuto a zig zag

Salve, sto cercando di scrivere un ea basato su zigzag e pitchfork,

sto cercando di scrivere un ea basato su zigzag e pitchfork.

per disegnare il pitchfork ho bisogno del prezzo e del tempo degli ultimi 4 zigzag

Ottengo il prezzo con ICustom()

ma non so come ottenere il tempo

Per favore aiutatemi

grazie in anticipo

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

questo è per il prezzo...

int n0, n1, n2, n3, i0, i1, i2, i3 = 0;

doppio zig0, zig1, zig2, zig3

mentre(n3<4)

{

zig3=iCustom(NULL, 0, "ZigZag", 0, i3);

if(zig3>0) n3+=1;

i3++;

}

while(n2<3)

{

zig2=iCustom(NULL, 0, "ZigZag", 0, i2);

if(zig2>0) n2+=1;

i2++;

}

while(n1<2)

{

zig1=iCustom(NULL, 0, "ZigZag", 0, i1);

if(zig1>0) n1+=1;

i1++;

}

while(n0<1)

{

zig0=iCustom(NULL, 0, "ZigZag", 0, i0);

if(zig0>0) n0+=1;

i0++;

}

...........................................

 

piccolo cambiamento necessario per l'indi

Questo è il codice per le caselle giornaliere, ma ho bisogno di alcune modifiche: voglio avere un gap dove il mercato tokio chiude e londra apre, quindi diciamo che la casella è blu (per tutto il giorno) e il gap dovrebbe essere bianco

#proprietà indicator_chart_window

int gi_76 = 50;

stringa gs_80 = "00:00

stringa gs_88 = "23:59

extern color Color_Up = Lavanda;

extern color Color_Down = Grano;

extern color Color_Neutral = LightGray;

bool gi_108 = TRUE;

double gd_112;

int g_color_120 = Rosso;

void init() {

DeleteObjects();

for (int l_count_0 = 0; l_count_0 < gi_76; l_count_0++) CreateObjects("PWT1" + l_count_0, g_color_120);

Comment("");

}

void start() {

int l_datetime_0 = TimeCurrent();

for (int l_count_4 = 0; l_count_4 < gi_76; l_count_4++) {

DrawObjects(l_datetime_0, "PWT1" + l_count_4, gs_80, gs_88);

for (l_datetime_0 = decDateTradeDay(l_datetime_0); TimeDayOfWeek(l_datetime_0) > 5; l_datetime_0 = decDateTradeDay(l_datetime_0)) {

}

}

}

void DrawObjects(int ai_0, string a_name_4, string as_12, string as_20) {

int l_str2time_28 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_12);

int l_str2time_32 = StrToTime(TimeToStr(ai_0, TIME_DATE) + " " + as_20);

int l_shift_52 = iBarShift(NULL, 0, l_str2time_28);

int l_shift_56 = iBarShift(NULL, 0, l_str2time_32);

int l_shift_60 = iBarShift(NULL, PERIOD_D1, l_str2time_28);

se (iClose(NULL, PERIOD_D1, l_shift_60) - iOpen(NULL, PERIOD_D1, l_shift_60) > 0.0) gd_112 = iClose(NULL, PERIOD_D1, l_shift_60) - iOpen(NULL, PERIOD_D1, l_shift_60);

else gd_112 = iOpen(NULL, PERIOD_D1, l_shift_60) - iClose(NULL, PERIOD_D1, l_shift_60);

if (gd_112 < iATR(NULL, PERIOD_D1, 7, l_shift_60) / 100.0) g_color_120 = Color_Neutral;

altrimenti {

se (iOpen(NULL, PERIOD_D1, l_shift_60) > iClose(NULL, PERIOD_D1, l_shift_60)) g_color_120 = Color_Down;

altrimenti

se (iClose(NULL, PERIOD_D1, l_shift_60) > iOpen(NULL, PERIOD_D1, l_shift_60)) g_color_120 = Color_Up;

}

double l_high_36 = Alto

double ld_44 = Basso;

if (!gi_108) {

l_alto_36 = 0;

ld_44 = 2.0 * ld_44;

}

ObjectSet(a_name_4, OBJPROP_TIME1, l_str2time_28);

ObjectSet(a_name_4, OBJPROP_PRICE1, l_high_36);

ObjectSet(a_nome_4, OBJPROP_TIME2, l_str2time_32);

ObjectSet(a_nome_4, OBJPROP_PRICE2, ld_44);

ObjectSet(a_name_4, OBJPROP_COLOR, g_color_120);

}

int decDateTradeDay(int ai_0) {

int li_4 = TimeYear(ai_0);

int li_8 = TimeMonth(ai_0);

int li_12 = TimeDay(ai_0);

int l_hour_16 = TimeHour(ai_0);

int l_minuto_20 = TempoMinuto(ai_0);

li_12--;

se (li_12 == 0) {

li_8--;

se (li_8 == 0) {

li_4--;

li_8 = 12;

}

if (li_8 == 1 || li_8 == 3 || li_8 == 5 || li_8 == 7 || li_8 == 8 || li_8 == 10 || li_8 == 12) li_12 = 31;

se (li_8 == 2) {

if (MathMod(li_4, 4) == 0.0) li_12 = 29;

altrimenti li_12 = 28;

}

if (li_8 == 4 || li_8 == 6 || li_8 == 9 || li_8 == 11) li_12 = 30;

}

return (StrToTime(li_4 + "." + li_8 + "." + li_12 + " " + l_hour_16 + ":" + l_minute_20));

}

void CreateObjects(string a_name_0, color a_color_8) {

ObjectCreate(a_nome_0, OBJ_RECTANGLE, 0, 0, 0, 0, 0, 0);

ObjectSet(a_nome_0, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet(a_nome_0, OBJPROP_COLOR, a_color_8);

ObjectSet(a_name_0, OBJPROP_BACK, TRUE);

}

void DeleteObjects() {

for (int l_count_0 = 0; l_count_0 < gi_76; l_count_0++) ObjectDelete("PWT1" + l_count_0);

}

void deinit() {

DeleteObjects();

Comment("");

}

Motivazione: