Chiedete! - pagina 61

 

Domanda sul codice

Si prega di ignorare il post. Questa impostazione ha fatto quello che mi serviva. Grazie per iniziare ad aiutarci.

Ho modificato un EA per lavorare con diversi metodi. Ho fatto qualche ricerca ma non riesco a capire come aggiungere il nome dell'EA al campo dei commenti quando si apre un ordine. Qualcuno può per favore indicarmi la giusta direzione.

Spero che ci sia un semplice comando stringa che posso integrare in qualsiasi EA che modifico in modo che gli ordini siano meglio organizzati quando si esegue più di un EA durante un test.

Grazie per il tuo tempo e le tue intuizioni.

Ecco una delle sezioni non modificate che dovrò cambiare per inserire il commento EA.

if(ObjectFind(BuyStop_TrendName) == 0)

{

SetObject("Active" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

SetObject("Prepare" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

vA = NormalizeDouble(ObjectGetValueByShift("Active"+BuyStop_TrendName,0),Digits);

vM = NormalizeDouble(ObjectGetValueByShift(BuyStop_TrendName,0),Digits);

vP = NormalizeDouble(ObjectGetValueByShift("Prepare"+BuyStop_TrendName,0),Digits);

sl = vA - BuyStop_StopLoss*Point;

tp = vA + BuyStop_TakeProfit*Point;

if(Ask = vP && OrderFind(MagicBuyStop) == false)

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

if(Ask = vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP)

{

OrderSelect(glbOrderTicket, SELECT_BY_TICKET, MODE_TRADES);

if(vA != OrderOpenPrice())

if(OrderModify(glbOrderTicket, vA, sl, tp, 0, Green) == false)

Print("Err (", GetLastError(), ") Modify BuyStop Price= ", vA,

" SL= ", sl, " TP= ", tp);

}

if(Ask < vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP && AutoClose==true)

{

OrderDelete(glbOrderTicket);

}

}

[/code]

I am not sure of the logic but can I just input the CommentName in the following location? I have not tested this but it compiles fine.

[code]

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

File:
 

Grazie Coderguru per essere qui per noi!

Ho una domanda sugli avvisi.

Voglio cambiare il tipo di allarme in questo codice in modo che suoni un file wav che scelgo io e non abbia la finestra popup di compravendita. Solo riprodurre il file wav quando appare il frattale.

Come dovrebbe essere il codice. Ho allegato l'indicatore di allarme sFractals.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alert("sFractals (", Symbol(), ", ", Period(), ") - COMPRA!!!");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals (", Symbol(), ", ", Period(), ") - VENDERE!!!");

}

}

File:
sfractals.mq4  8 kb
 
proverbs:
Non sono sicuro della logica, ma posso semplicemente inserire il CommentName nella seguente posizione? Non ho testato questo, ma compila bene.

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Questo funzionerà bene. Puoi anche mettere una variabile stringa in quel posto.

 
Drivefast:
Grazie Coderguru per essere qui per noi!

Ho una domanda sugli avvisi.

Voglio cambiare il tipo di allarme in questo codice in modo che suoni un file wav che scelgo io e non abbia la finestra popup di compravendita. Basta riprodurre un file wav quando appare il frattale.

Come dovrebbe essere il codice. Ho allegato l'indicatore di allarme sFractals.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

Alert("sFractals (", Symbol(), ", ", Period(), ") - COMPRA!!!");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

Alert("sFractals (", Symbol(), ", ", Period(), ") - VENDERE!!!");

}

}

Credo che CodersGuru sia morto o qualcosa del genere. Non si fa vedere da un po'.

Comunque.... aggiungere questa dichiarazione:

PlaySound("alert.wav");

.... dove "alert.wav" è il nome del file che vuoi riprodurre.

 
ryanklefas:
Credo che CodersGuru sia morto o qualcosa del genere. Non si fa vedere da un po'.

Comunque.... aggiungere questa dichiarazione:

PlaySound("alert.wav");

.... dove "alert.wav" è il nome del file che volete riprodurre.

Grazie per aver risposto al mio post.

Non sono sicuro di dove mettere PlaySound("alert.wav"); nel codice.

Posso semplicemente cancellare questa parte? Alert("sFractals (", Symbol(), ", ", Period(), ") - COMPRA!!!");

Oppure, deve essere qualcosa come questo?

PrevSignal = 1;

PlaySound("alert.wav");

Alert("sFractals (", Symbol(), ", ", Period(), ") - COMPRA!!!");

 

Sì. Basta sostituire l'intero avviso con il suono.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

PlaySound("alert.wav");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

PlaySound("alert.wav");

}

}
 

Grazie ryanklefas per tutto il tuo aiuto, ora funziona proprio come voglio.

 

Domanda sull'ordinamento

Ho una tabella di dati, a 2 dimensioni, memorizzata in un array a 2 dimensioni. Voglio fare qualche manipolazione, come l'ordinamento in base a qualsiasi colonna di quella tabella di dati.

La funzione ArraySort(), nelle istruzioni, può ordinare gli array sulla sua 1a dimensione. Non vedo come questo possa funzionare per me.

Qualche suggerimento sull'ordinamento delle tabelle di dati su MetaTrader?

 

Comunicazione tra Expert Advisor

Salve,

voglio sapere se c'è un modo per comunicare tra gli expert advisor, diciamo che ho EA A come strategia principale

e il backup EA B come strategia di backup

Lo posiziono su 2 coppie diverse...

Voglio innescare se EA A è in posizione di drawdown, avviare EA B ...

quando il profitto cumulativo per EA A e EA B ha raggiunto un certo punto obiettivo ...

chiudere tutte le posizioni di EA A e EA B

è possibile farlo?

 
veematics:
Ciao,

Voglio sapere se c'è un modo per comunicare tra gli expert advisor, diciamo che ho EA A come strategia principale

e EA B come strategia di backup

li posiziono su 2 coppie diverse...

Voglio innescare se EA A è in posizione di drawdown, avviare EA B ...

quando il profitto cumulativo per EA A e EA B ha raggiunto un certo punto obiettivo ...

chiudere tutte le posizioni di EA A e EA B

è possibile farlo?

Penso che le variabili globali siano la cosa che stai cercando. Puoi controllarle nella sezione di riferimento di MetaEditor. Per visualizzare le tue attuali variabili globali, premi F3 nel terminale MT4.

Motivazione: