Come codificare? - pagina 230

 

studiare i grafici del 2010

usando il tuo modello per creare qualcosa -- oltre la lega di stocastico

come abbiamo usare i nostri grafici stocastici nei primi giorni -- si applica ancora ai grafici 2010 -- quelli sono veri commercianti, bud e si potrebbe avere i suoi incarichi -- sono in programmazione matematica integrale di lebesgue non-banding -- ricorda il film She's Out of My League --- buon lavoro significa buona paga -----

leggi i codici -- un po' meno sofisticati dell'attuale stile di investimento nel 2010

 
scottyb:
Ho provato praticamente ogni possibile combinazione del maledetto difetto della parentesi che sto ottenendo cercando di compilare. Sono stato a guardarlo per molte ore ma nessuna fortuna nel fissarlo. L'ho inchiodato a una sezione di codice che sta rovinando lo script. Qualcuno mi consiglia su ciò che è sbagliato (oltre a me essere un idiota).

void ScanForClosure ()

{

int cash = OrderProfit() + OrderSwap() + OrderCommission()

int MacdCurrent, MacdPrevious, SignalCurrent;

int SignalPrevious, MaCurrent, MaPrevious;

int total2 = OrdersTotal();

int numords2 = 0;

bool type = false;

int trd2 = 0;

MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);

ArrayResize(lastOrders,5);

ArrayInitialize(lastOrders,0);

//

for(int cnt=0; cnt<totale2; cnt++)

{

OrderSelect(cnt, SELECT_BY_POS);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) ;

{

se ((OrderType()==OP_BUY)&&

(MacdCurrent>0)&&

(MacdCurrent<SignalCurrent)&&

(cassa > 0)&&

(MacdPrevious>SignalPrevious) && MacdCurrent>(MACDCloseLevel*Point));

{

CloseOrder(1);

}

if ((OrderType()==OP_SELL)&&

(cash > 0)&& (MacdCurrent<0 ) &&

(MacdCurrent>SignalCurrent)&&

(MacdPrecedente<SegnalePrecedente)&&

(MathAbs(MacdCurrent))>(MACDCloseLevel*Point));

{

CloseOrder(2);

}

}

}

}

Ciao Scotty,

Sto copiando dall'esempio di macd

if(OrderType()==OP_BUY)

{

if(MacdCurrent>0 && cash > 0 && MacdCurrentSignalPrevious &&

MacdCurrent>(MACDCloseLevel*Point))

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

return(0);

}

else

{

if(MacdCurrent 0 && MacdCurrent>SignalCurrent &&

MacdPrevious(MACDCloseLevel*Point))

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // chiude la posizione

return(0);

}

Saluti

strumenti

 
forextrend:
perché questo codice dà un errore di conteggio dei parametri errato:

for(int i = 0;i < 3;i++)

{

kline = iStochastic(NULL,TimeFrame1, Period(), 4, 3, 3, MODE_SMA, 1, MODE_MAIN, i);

dline = iStochastic(NULL,TimeFrame1, Period(), 4, 3, 3, MODE_SMA, 1, MODE_SIGNAL, i);

}

Dovrebbe essere

int counted_bars = IndicatorCounted();

int limite,i;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limite = Bars - counted_bars;

for(int i=limite; i>=0; i--)

{

kline = iStochastic(NULL,TimeFrame1, 4, 3, 3, MODE_SMA, 1, MODE_MAIN, i);

dline = iStochastic(NULL,TimeFrame1, 4, 3, 3, 3, MODE_SMA, 1, MODE_SIGNAL, i);

Saluti

strumenti

 

Grazie Mr Tools forse lo stavo rendendo troppo complesso ma cosa c'era di sbagliato? L'esempio postato farà la scansione di tutti i biglietti aperti? Penserei che ne scannerizzerebbe solo 2 (un singolo buy e un singolo sell), molto probabilmente lo stesso ogni volta :/ Sono molto nuovo a questa programmazione mt4 ma sono sicuro che questo è ciò che accadrebbe.

 

ho capito

È incredibile che tu fissi lo stesso problema per 10 ore di fila e non riesci a risolverlo. Ho dato un'altra occhiata. Quando mi sono svegliato l'ho risolto in 5. Sembra che questo codice MT4 sia molto stretto. Sembra che tu abbia bisogno di codificare esattamente ciò che sta cercando (sia che tu possa o meno fare la stessa identica cosa in altre 10 lingue e funzionare)

Ho creato bot per World of Warcraft per far correre un personaggio da solo in un gioco che individua e uccide le cose, ma quando provo a fare una semplice routine di acquisto e vendita in MT4 faccio fatica

Comunque la lezione per me è stata quella di limitare ciò che si mette su una linea con un if. Spero di aver risparmiato a qualche altro il dolore che ho avuto io.

OrderSelect(cnt, SELECT_BY_POS);

if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

if (OrderType()==OP_BUY)

se (profitto>0)

se (MacdCurrent<SignalCurrent)

se (MacdCurrent>0)

se (MacdPrevious>SignalPrevious)

se (MacdCurrent>(MACDCloseLevel*Point))

{

CloseOrder(1);

}

se (OrderType()==OP_SELL)

se ((MacdCurrent<0 ) )

se (profitto >0 )

se (MacdCurrent>SignalCurrent)

se (MacdPrecedente<SegnalePrecedente)

se (MathAbs(MacdCurrent) >(MACDCloseLevel*Point))

 

Assistenza codice - Frattali

Ciao a tutti,

Sto cercando un aiuto sul codice necessario per fare quanto segue come parte di un sistema su cui sto lavorando:

Valido lungo se:

(numerato più vecchio al più recente 1-x)

-> Frattale che punta in basso 1 superiore al Frattale in basso 2

-> Frattale Up 1 si forma e crea la condizione di break-long possibile, tuttavia

-> Il Frattale Down 3 deve essere superiore al Frattale Down 2

-- Questo convalida il cambiamento di tendenza. Una rottura del prezzo del frattale superiore sarebbe un valido VERO. Se si forma un nuovo frattale superiore più basso, quello è il nuovo punto di rottura a meno che non ci sia un frattale più basso del frattale precedente. I frattali inferiori dovrebbero fare massimi più alti.

L'inverso è vero per la convalida breve.

Saluti

Aaron

 

Posso provare a spiegare un po' meglio

Quindi c'è una tendenza al rialzo del prezzo, si forma un frattale superiore. Il prezzo ritraccia e si forma un frattale inferiore. Il prezzo continua a ritrattare e si forma un altro frattale inferiore.

Poi il prezzo sale per formare un nuovo frattale superiore inferiore.

Il prezzo ritraccia e si forma un altro frattale inferiore, ma questo è più alto del precedente frattale inferiore.

Il prezzo rompe il precedente frattale superiore, condizione di break long valida.

PS Se si forma un nuovo frattale inferiore superiore, ma i frattali inferiori continuano a fare massimi più alti, il nuovo punto di rottura è il frattale superiore più recente.

PPS Se iniziano a formarsi frattali inferiori, le condizioni vengono resettate e continuiamo a cercare le condizioni di cui sopra o le condizioni inverse per la convalida short di una rottura.

Saluti

Aaron

 

E di cosa avete bisogno esattamente per la programmazione? Hai bisogno di far programmare l'intero sistema?

 

Solo la parte logica.

Diciamo un bool che è ValidBuy = FALSE;

se la logica delle condizioni come sopra si verifica lo imposta su TRUE.

Sono sicuro che si tratta di un array che confronta i valori dell'array, ma non sono così bravo quando si tratta di codificare gli array.

Saluti

Aaron

 

Non c'è bisogno di usare nessun array. Basta creare una funzione, che troverà il livello del frattale dato, in modo da poterlo chiamare così:

double fractal = FindFractal( 0, MODE_LOWER );[/CODE]

first parameter being number of fractal (0-last, 1-one before last, etc.) and second parameter telling if you want upper or lower fractal.

Then, you can code like this:

[CODE]double last_lower_fractal = FindFractal( 0, MODE_LOWER );

double previous_lower_fractal = FindFractal( 1, MODE_LOWER );

if( last_lower_fractal > previous_lower_fractal )

{

//we have found that most recent lower fractal is higher than its predecessor, do rest of your logic here.

}