Come codificare? - pagina 54

 

Altra domanda

ora il mio EA come questo

se(FastMA2 SlowMA1)

{

ChiudiPosizioni();

OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-SLpips*Point,Ask+(45*Point),"",MAGIC,0,Blue);

ritorno(0);

Voglio cambiare in questo modo

1. 15minuti timeflame accadere acquistare segno

2. se poi 5minuti timeflame MA cross segno buy già, anche

ClosePosition. e ottenere una nuova posizione

se poi 5minuti timeflame MA cambiare vendere segno già

attendere 5minutes timeflame cambiare segno buy,

poi ClosePosition. e ottenere una nuova posizione

Per favore ditemi come scrivere questo programma.

 
File:
 

Ciao

Sto cercando un po' di aiuto, ho un EA che sto usando in demo e con cui sto anche imparando a codificare. Sto cercando di capire come aggiungere un commento al sistema per mostrarmi quale dei 4 criteri di ingresso è stato utilizzato per aprire la posizione.

qualsiasi aiuto sarebbe grande

grazie

Beno

 
Beno:
Ciao

Sto cercando un po' di aiuto, ho un EA che sto usando in demo e con cui sto anche imparando a codificare. Sto cercando di capire come aggiungere un commento al sistema per mostrarmi quale dei 4 criteri di entrata è stato utilizzato per aprire la posizione. ad esempio se è stato utilizzato long2 allora mostra il segnale long2

qualsiasi aiuto sarebbe grande

grazie

Beno

Dopo che la tua condizione è soddisfatta e usi il comando Ordersend(), inserisci semplicemente una frase Comment(), Alert(), o Print(). Qualunque cosa vogliate usare.

Qualcosa di simile a questo:

if ( long2 == true)

{

Ordersend();

{

Print(" segnale long2 preso ");

}

}

Spero che questo aiuti.

 

Grazie Wolfe

Mi è venuto da ridere, ho messo quello che hai suggerito e ha funzionato più o meno, ma ora ho solo il commento e nessuna posizione che si apre. qualche suggerimento

bool Long = MAofRSI11>MAofRSI21 && MAofRSI12VolHL && RSIndex1HL2 && TrStop0.0 && SDLL && ma<Close[shift];

bool Short = MAofRSI11=MAofRSI22 && VolCH>VolHL && RSIndex1HLM && TrStop>Close[shift] && MOMClose[shift];

bool Long2 = MAofRSI11>HLM && MAofRSI12HLM && MAofRSI22VolHL && TrStop0.0 && SDLL && ma<Close[shift];

bool Short2 = MAofRSI11=HLM && MAofRSI21=HLM && VolCH>VolHL && TrStop>Close[shift] && MOMClose[shift];

bool Long3 = RSIndex1-RSIndex2>20<HL2 && TrStop0.0 && SDLL && ma<Close[shift];

bool Short3 = RSIndex2-RSIndex1>20>HL1 && TrStop>Close[shift] && MOMClose[shift];

bool Long4 = zscore>0.0 && ma<Close[shift];

bool Short4 = zscoreClose[shift];

buysig = Long || Long2 || Long3 || Long4;

sellsig = Short || Short2 || Short3 || Short4;

closebuy=sellsig;

closesell=buysig;

if (curprof>=AccountBalance()*ProfitExit/100.0) {

exit=true;

}

if (last>0 && (Time[0]-last)/(Period()*60)>=CancelOrderBars) {

remorder=true;

}

}

void CheckForOpen() {

int res,tr;

//---- condizioni di vendita

co=CalculateCurrentOrders(Symbol());

if(sellsig && lastsig!=-1) {

co=CalcolaOrdiniCorrenti(Simbolo());

se (co==0) {

if ( Short == true)

if ( Short2 == true)

if ( Short3 == true)

res = OpenStop(OP_SELLSTOP,LotsRisk(StopLoss), Low[shift]-OrderPipsDiff*Point, StopLoss, TakeProfit1);

Stampa(" Segnale short preso ");

Stampa(" Segnale Short2 preso ");

Stampa(" Segnale Short3 preso ");

Print(" Segnale Short4 preso ");

}

lastsig=-1;

last=Time[0];

ritorno;

}

//---- condizioni di acquisto

if(buysig && lastsig!=1) {

co=CalculateCurrentOrders(Symbol());

if (co==0) {

if ( Long == true)

se ( Long2 == true)

se ( Long3 == true)

se ( Long4 == true)

res = OpenStop(OP_BUYSTOP,LotsRisk(StopLoss), High[shift]+OrderPipsDiff*Point, StopLoss, TakeProfit1);

Stampa(" Segnale Long preso ");

Stampa(" Segnale Long2 preso ");

Stampa(" Segnale Long3 preso ");

Stampa(" Segnale Long4 preso ");

}

last=Time[0];

lastsig=1;

ritorno;

}

}

Risolto Grazie

 

Debug del codice

Come e dove usereste un po' di codice come questo. Ho un errore di divisione zero che non riesco a trovare come risolvere.

extern bool DEBUGGING = true

...

if(DEBUGGING && variableName == 0) Print("CodePoint 1 -- Questa variabile è ora ", variableName);

... altro codice

if(DEBUGGING && variableName == 0) Print("CodePoint 2 -- Questa variabile è ora ", variableName);

... altro codice

if(DEBUGGING && variableName == 0) Print("CodePoint 3 -- Questa variabile è ora ", variableName);

...

 

Puoi aiutarmi? Perché ci sono molti errori nel codice?

Questo è per calcolare SMMA:

for(j=0;j<Bars;j++)

{

for(i=0,sum=0;i<ma_periodo;i++)

{

sum=sum+Close[j+i];

// buffer[j]=(somma/somma/ma_periodo+Chiusura[j+i])/ma_periodo;

}

buffer[j]=(somma-somma/ma_periodo+Close[j])/ma_periodo;

}

questo è per calcolare LWMA

for(j=0;j<Bars;j++)

{

for(i=0,sum=0,sum1=0;i<ma_periodo;i++)

{

sum=sum+Close[j+i];

sum1=sum1+Close[j+i]*(j+i);

// buffer[j]=sum/ma_periodo;

}

buffer[j]=sum1/sum;

}

e come calcolare l'EMA?

 

domanda sugli indicatori

Ciao a tutti.

Sono bloccato su un problema di programmazione. Qualcuno sa come utilizzare il risultato di 1 indicatore per cambiare un'altra impostazione? Per esempio, se la stockasti giornaliera fosse superiore a 20, vorrei una media mobile di (x). Ho provato a far funzionare il codice qui sotto ma senza successo. Non mi sembra di essere in grado di far funzionare lo switch o il comando if else.

doppio fourhrUP;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);

doppio daystoch20 = 20;

se (daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

 
ajk:
Ciao a tutti.

Sono bloccato su un problema di programmazione. Qualcuno sa come utilizzare il risultato di 1 indicatore per cambiare un'altra impostazione? Per esempio, se lo stockasti giornaliero fosse superiore a 20, vorrei una media mobile di (x). Ho provato a far funzionare il codice qui sotto ma senza successo. Non mi sembra di essere in grado di far funzionare lo switch o il comando if else.

doppio fourhrUP;

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,1);

doppio daystoch20 = 20;

se (daystoch1 > daystoch20) four_hrUP = 5 ;

double iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift)

Dov'è la variabile del tuo MA?

Forse questo potrebbe aiutare

double ma4hr=iMA( string symbol, int timeframe,four_hrUP, int ma_shift, int ma_method, int applied_price, int shift);

se il calcolo dello stoch è nello stesso ciclo, diciamo "for(int shift=limit-1; shift>=0; shift--)", il codice stoch dovrebbe essere

double daystoch1 = iStochastic(NULL, PERIOD_D1,5, 3, 3, MODE_SMA, 0, MODE_MAIN,shift+1);

CMIIW

 

Un piccolo aiuto con un indicatore - Coder's Please Look

Sto testando la piattaforma di un broker MT4 che usa pip frazionari (pipette) nelle sue quotazioni: Per esempio su EURJPY quotano 164.381 invece di 164.38 - Questo significa che lo spread ha un decimale come 4.1 pip (invece di 4).

Qualcuno può dirmi come MODIFICARE il seguente codice in modo che lo spread venga letto correttamente? In questo momento uno spread di 4.1 pip sarebbe letto come 41.0 nell'indicatore. Qualsiasi aiuto è apprezzato.

Dan

//---- spread

Spread=NormalizeDouble((Ask-Bid)/Point,1);

ObjectSetText("Spread Monitor1", "Spread:", 10, "Arial", labelColor);

ObjectSetText("Spread Monitor2",DoubleToStr(Spread,1),10, "Arial", clockColor);