Come codificare? - pagina 313

 

Ciao,

è possibile con il codice modificare solo l'ordine di acquisto o di vendita del simbolo grafico attivo corrente?

Sarebbe molto utile per me in uno script dove uso la funzione WindowsPriceonDropped per aprire un ordine.

Grazie per l'aiuto.

 

...

dasio,

Prova qualcosa del genere:

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==false) continue;

if (OrderSymbol()!=Symbol()) continue;

if (OrderType()==OP_BUY || OrderType()==OP_SELL)

{

// do the proccessing you wish here

}

}

dasio:
Ciao,

è possibile con il codice modificare solo l'ordine di acquisto o di vendita del simbolo grafico attivo corrente?

Sarebbe molto utile per me in uno script dove uso la funzione WindowsPriceonDropped per aprire un ordine.

grazie
 

Chi vuole una sfida?

Ho bisogno di un po' di codice per fare quanto segue, vedi screenshot allegato. Questo sarebbe Buy trade.

Ho provato un ciclo for, un casino di condizioni if e nessuno dei due ha prodotto i risultati che sto cercando.

Sembra essere semplice ma non sono stato in grado di farlo funzionare.

File:
maexample.jpg  54 kb
 

La tua condizione di inserimento potrebbe essere scritta in modo simile a questo:

double pipMultiplier = 1;

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

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

cyber1:
Ho bisogno di codice per fare quanto segue, vedi screenshot allegato. Questo sarebbe Buy trade.

Ho provato un ciclo for, un casino di condizioni if e nessuno dei due ha prodotto i risultati che sto cercando.

Sembra essere semplice ma non sono stato in grado di farlo funzionare.
 
mladen:
La tua condizione di entrata potrebbe essere scritta in modo simile a questo:
double pipMultiplier = 1;

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

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

Il codice che hai postato mi darebbe il segnale per la barra a cavallo della media mobile. Ma ho anche bisogno di un modo per entrare in un trade su qualsiasi barra oltre la barra straddle fino a 5 barre, purché non superino la MA+5. Il motivo per cui non sto prendendo un segnale di acquisto sulla barra straddle è che c'è un altro indicatore che deve mostrare un valore VERO che potrebbe non essere VERO sulla barra straddle ma se è VERO in qualsiasi barra fino a 5 barre dopo la barra straddle e non ha superato il limite MA +5 posso ancora prendere un trade. Non prendendo più trade solo uno per set up.

Il seguente è quello che ho finora. A questo punto sto solo segnando le barre idonee con una freccia sotto, solo acquisti. Una volta che l'avrò capito, metterò il mio codice per eseguire l'ordine. So che sembra semplice, ma a meno che non mi manchi qualcosa di ovvio, non lo è.

//+------------------------------------------------------------------+

double Poin;

//+------------------------------------------------------------------+

//| Custom initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators

if (Point==0.00001) Poin=0.0001;

else {

if (Point==0.001) Poin=0.01;

else Poin=Point;

}

//----

return(0);

}

//+------------------------------------------------------------------+

// +

//+------------------------------------------------------------------+

int deinit(){

return(0);

}

//+------------------------------------------------------------------+

//| Custom indicator iteration function |

//+------------------------------------------------------------------+

int start(){

int MAM1StartBar=1;

int M1MAEntryPoint1=0;

int M1MAEntryPoint2=5;

string sObjName;

//------Indicators-------------//

double MAM0= iMA(NULL,0,20,0,0,0,MAM1StartBar);

double MAM1= iMA(NULL,0,20,0,0,0,MAM1StartBar+1);

double M1High0 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1High1 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1High2 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1High3 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1High4 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1High5 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

double M1Low0 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1Low1 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1Low2 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1Low3 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1Low4 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1Low5 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

// double MAM1TRL1=NormalizeDouble(MAM0+M1MAEntryPoint1*Poin,Digits);

// double MAM1TRL2=NormalizeDouble(MAM0+M1MAEntryPoint2*Poin,Digits);

//Blue arrow indicates straddle bar

if(M1High0>= MAM0 && M1Low0<=MAM0){

sObjName="Test_BLine1"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1.5*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Blue);

}

//Aqua arrow indicates straddle bar+1

if(M1Low1=MAM0){

if(M1High1<=MAM0+M1MAEntryPoint2*Poin){

if(M1Low0 > MAM0){

sObjName="Test_BLine2"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Aqua);

}

}

}

//----

return(0);

}

 

In questo screenshot è necessario interrompere alla barra 4 perché la barra 3 supera il limite MA +5, il che significa che alla barra 4 è necessario controllare se la barra 3 ha superato il limite MA +5, e così è la fine di questo trade setup.

Qui tutte le 5 barre sono ammissibili perché nessuna di esse ha superato il limite MA +5

File:
 

In questa schermata è necessario interrompere alla barra 4 perché la barra 3 supera il limite MA +5, il che significa che alla barra 4 è necessario controllare se la barra 3 ha superato il limite MA +5, lo ha fatto, cioè la fine di questa configurazione di trading.

Qui tutte le 5 barre sono ammissibili perché nessuna di esse ha superato il limite MA +5

 

...

cyber1

Nei tuoi esempi, per quanto vedo, per poter abortire come descrivi, devi anche conoscere il futuro (poiché prima della barra di "aborto" le regole si applicavano e restituivano un segnale di via)

D'altra parte, se provi a testare tutte le barre indietro per la condizione di entrare, alla fine avrai sempre una "rottura della regola" e non potrai entrare in posizione

cyber1:
In questo screenshot è necessario interrompere alla barra 4 perché la barra 3 supera il limite MA +5, il che significa che alla barra 4 è necessario controllare se la barra 3 ha superato il limite MA +5, lo ha fatto, cioè la fine di questa configurazione di trading.

Qui tutte le 5 barre sono idonee perché nessuna di esse ha superato il limite MA +5

 

Chiudere tutti i trade aperti EA

Qualcuno può aiutarmi a fare questo EA?

Questo EA chiuderà tutte le coppie di trade aperte quando raggiunge il profitto e la perdita prefissati.

Quando chiude tutto, allora inizia a monitorare il trade aperto.

Ho un talento limite per fare questo.

Questo ea è separato dall'ea principale di ogni coppia.

 

Segnale e linee di resistenza/supporto dinamici.

Potete aiutarmi a tradurre questo indicatore nella lingua di MT4?

a:=(hhv(close,tpr)+llv(close,tpr)+close)/3;

b:=(a1*2)-hhv(close,tpr);

spostamento b:=mov(b,tpr,semplice);

c:=(a1*2)-llv(close,tpr);

spostamento c:=mov(c,tpr,semplice);

d:=(hhv(close,tpr/2)+llv(close,tpr/2)+close)/3;

spostamento d:=mov(d,tpr/2,semplice);

flusso:=(b+c+d)/3;

flusso in movimento:=mov(flusso,tpr,semplice).

hhv= valore massimo del periodo (il valore più alto del prezzo di chiusura nel periodo di tempo scelto)

llv= valore minimo del periodo (il valore più basso del prezzo di chiusura nel periodo di tempo scelto)

tpr= periodo di tempo (da 1 a quello che vuoi)

mov= media mobile.

L'output deve avere "stream" e "moving stream"! Anche se ha anche "b", "moving b", "c", "moving c", "d" e "moving d" non è una brutta cosa!

Grazie.

Questo forum è fantastico......

Lucmat

File:
immagine.jpg  258 kb