Come codificare? - pagina 92

 
delvinja:
Ciao ragazzi, ho cercato per gli ultimi tre giorni di ottenere questo expert advisor per eseguire operazioni lunghe in mt4 senza successo. esegue solo operazioni corte anche se il signal_buy è lì. per favore qualcuno potrebbe dare un'occhiata a questo codice e risolverlo per me o dirmi cosa fare. sono nuovo nella programmazione e l'ho costruito da un costruttore di strategie online. grazie in anticipo! il codice è allegato.
double ... = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);[/PHP]

I am not sure about the -3 shift parameter : it shift the curve to the left, so the current bar is undefinited. Try to replace all -3 by 0 to see if the buy orders are triggered.

I would replace

double Var1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Var2 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Var3 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double Var4 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);

double Buy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double Sell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current + 0);

double CloseBuy1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

double CloseSell1_1 = iMA(NULL, 0, 3, -3, MODE_SMA, PRICE_CLOSE, Current + 0);

double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current + 0);

by

[PHP]double Buy1_1 = iMA(NULL, 0, 3, 0, MODE_SMA, PRICE_CLOSE, Current);

double Buy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

double Sell1_1 = Buy1_1;

double Sell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_LOWER, Current);

double CloseBuy1_1 = Buy1_1;

double CloseBuy1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

double CloseSell1_1 = Buy1_1;

double CloseSell1_2 = iBands(NULL, 0, 20, 2, 1, PRICE_CLOSE, MODE_UPPER, Current);

Rem :

- Var1,2,3,4 non sono utilizzati.

- Sia CloseBuy1_2 che CloseSell1_2 sono uguali: uno è probabilmente sbagliato (MODE_LOWER)

 

Bisogno di aiuto con il codice

Michel, grazie mille per il tuo aiuto, l'ho risolto perfettamente! Voi ragazzi siete i migliori, posso finalmente riposare un po'. Vi farò sapere come sono andati i miei test.

A proposito, stai dicendo che -3 non sarà mai in grado di lavorare in questo expert advisor? Grazie ancora.

 
delvinja:
... a proposito, stai dicendo che -3 non potrà mai funzionare in questo expert advisor? grazie ancora.

A dire il vero, non ho mai capito l'uso di questo spostamento: se volete conoscere il valore di un indicatore 3 barre prima della barra attuale, basta usare 3 come spostamento, ma l'ultimo; il primo sposta solo il disegno della curva, e se usate un valore negativo, è come se il passato conoscesse il futuro...

Comunque sarei felice che qualcuno mi spiegasse il suo uso!

Ma per rispondere alla tua domanda, cerca di conoscere la strategia esatta che vuoi seguire, da dove viene quel -3 ?

 

ciao

su questo esperto vorrei modificare tutti gli sl agli ultimi ordini sl come tp ma non ci sono riuscito

per favore aiutatemi

File:
javadea.mq4  9 kb
 

Cosa ho fatto?

Ho bisogno di aiuto per codificare in MT4

Ho del codice qui sotto:

StopLoss=EMAtrend-iClose(NULL,0,1);

TakeProfit=StopLoss

Se(EMAshort>EMAlong && EMAshort_prev<EMAlong_prev)

{

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask+StopLoss*Point,Bid+TakeProfit*Point, "Buy at close price",10000,0,Green);

}

Se(EMAshortEMAlong_prev)

{

OrderSend(Symbol(),OP_SELL,Lots,Bid,0,StopLoss,Bid+TakeProfit*Point, "Sell at close price",11000,0,Red);

}

L'idea era:

1. Aprire l'ordine al prezzo di chiusura quando i criteri sono soddisfatti;

2. Voglio fare in modo che l'EMAtrend sia il livello di stoploss;

3. La distanza tra l'EMAtrend e la barra del prezzo di chiusura sarà la distanza per il takeprofit dal prezzo aperto

Provo il codice di cui sopra ma non succede niente e c'è un errore 130.

Per favore aiutatemi.

 

Bisogno di aiuto con il codice

Ciao a tutti

Sto cercando di far compilare un ea, ma si presenta con il seguente errore:

'TradeSymbol' - expression on global scope not allowed I:\Program Files\MetaTrader - Alpari\experts\TTL.mq4 (65, 34)[/CODE]

Now the part of the ea causing this is right at the start of the code :

string TradeSymbol; TradeSymbol=Symbol();

If I block this out it comes up with errors for the following bit of code :

[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }

if(TotalTradesThisSymbol(TradeSymbol)>0) {

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()== Symbol) {

if(OrderMagicNumber()==11) { BS=OrderTicket(); }

if(OrderMagicNumber()==22) { SS=OrderTicket(); }

if(OrderMagicNumber()==33) { BL=OrderTicket(); }

if(OrderMagicNumber()==44) { SL=OrderTicket(); }

}//end if(OrderSymbol

}//end for

}//end if */

Quello che voglio sapere è se c'è un modo semplice per risolvere questo problema.

Non sono bravo a codificare, solo a copiare e incollare.

Grazie in anticipo

Basza

 
basza:
Ciao a tutti

Sto cercando di far compilare un ea, ma si presenta con il seguente errore:

'TradeSymbol' - expression on global scope not allowed I:\Program Files\MetaTrader - Alpari\experts\TTL.mq4 (65, 34)[/CODE]

Now the part of the ea causing this is right at the start of the code :

string TradeSymbol; TradeSymbol=Symbol();

If I block this out it comes up with errors for the following bit of code :

[CODE] if(TotalTradesThisSymbol(TradeSymbol)==0) { int BS=0,SS=0,BL=0,SL=0; }

if(TotalTradesThisSymbol(TradeSymbol)>0) {

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()== Symbol) {

if(OrderMagicNumber()==11) { BS=OrderTicket(); }

if(OrderMagicNumber()==22) { SS=OrderTicket(); }

if(OrderMagicNumber()==33) { BL=OrderTicket(); }

if(OrderMagicNumber()==44) { SL=OrderTicket(); }

}//end if(OrderSymbol

}//end for

}//end if */

Quello che voglio sapere è se c'è un modo semplice per risolvere questo problema.

Non sono bravo a codificare, solo a copiare e incollare.

Grazie in anticipo

Basza

Puoi definire TradeSymbol come stringa nello scoop globale, ma lì non puoi valutare la funzione Symbol(). Quindi sostituisci tutto "TradeSymbol" con "Symbol()", o assegna il valore nella funzione init() o start() come questo:

void Init(){TradeSymbol=Symbol();}
 

aiuto nella programmazione

Ciao, stavo cercando di programmare un ea, e ho seguito il tuo corso (molto interessante!)

So abbastanza bene come programmare in java e un po' di c++

Stavo cercando di programmare un ea con gli indicatori di tendenza del cervello, l'idea di fondo è

quando brainTrend2stop e braintrend1stop DOT sono presenti compro (e viceversa)

ma se chiamo la funzione icustom in questo modo

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;

ottengo solo il valore dell'indicatore nella barra attuale

c'è un modo per renderlo booleano? Vorrei scrivere una funzione come

comprare=vero

BuyCondition = (IndicatorName1=true && IndicatorName2=true);

qualcuno può aiutarmi, per favore, per favore?

 

Controllare se un ordine di entrata viene eseguito...

Ho un EA che apre e gestisce la posizione, ma a volte dà all'indicatore lo stesso segnale multiplo e l'EA apre ogni volta che questo segnale esce una nuova posizione - ma non voglio una seconda o terza posizione e così via, voglio solo la prima - è possibile che l'EA controlli la posizione aperta in base al numero magico e alla coppia per evitare tali entrate multiple?

 
payback:
Ciao, stavo cercando di programmare un ea, e ho seguito il tuo corso (molto interessante!)

So abbastanza bene come programmare in java e un po' di c++

Stavo cercando di programmare un ea con indicatori di tendenza del cervello l'idea di fondo è

quando brainTrend2stop e braintrend1stop DOT sono presenti compro (e viceversa)

ma se chiamo la funzione icustom in questo modo

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1) ;

ottengo solo il valore dell'indicatore nella barra attuale

c'è un modo per renderlo booleano? Vorrei scrivere una funzione come

comprare=vero

BuyCondition = (IndicatorName1=true && IndicatorName2=true);

qualcuno può aiutarmi, per favore, per favore, per favore?
BuyCondition = BuyValueCurrent1 != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE;
Motivazione: