Pensa che qualche persona non di madrelingua inglese possa capire la sua storia? Capisco le pecore e il pastore Mr John, ma la storia non ha senso per me. (Forse sono io... quindi mi dispiace)
Potresti spiegare il tuo problema in un po' di 'inglese internazionale' usando le definizioni generali di trading/mql4?
Cosa significa questa frase?
Pensa che qualche persona non di madrelingua inglese possa capire la sua storia? Capisco le pecore e il pastore Mr John, ma la storia non ha senso per me. (Forse sono io... quindi mi dispiace)
Potresti spiegare il tuo problema in un po' di 'inglese internazionale' usando le definizioni generali di trading/mql4?
Cosa significa questa frase?
SOLO CANDELA - Come aprire la posizione? - dovrebbe essere il prossimo argomento. Moderatore cosa ne pensi? Posso?
Implementiamo lo scenario selezionato
Come inviare l'ordine?
int start() // start program { // We have some function here like "int CalculateCurrentOrders(string symbol)" and "double LotsOptimized()" // many different thing, suddenly! we have our "CheckOpen();" //-------------------------------- void CheckOpen() // void - because function return nothing { // start body int res; // we will use changeable "res" this is "int" value if( Bid==Close[1]+4*Point) // check conditions: Bid or Ask must be 4 Point above a BAR if no - nothing happen if Yes go below { // start body if res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,Open[1]+37*Point,0,"",MAGICMA,0,Red); // start "res" and "res" is sending message to platform to open position // what position is in "()" allways must be the same sequence symbol , op_*** , lot size , ...) return; // if "res" do it then retunrn too ... y ... "if". Because "if" is done return too CheckOpen(). Because "CheckOpen()" is done stop and end. } // stop body if } // stop body function "void CheckOpen()" //--------------------------------
Abbiamo un ordine
Ma cosa dovrei fare per aprire due posizioni in una funzione?
Abbiamo ilnostro scenario CheckForOpenS1() in questo scenario compriamo due volte se il nostro prezzo sarà nel posto giusto, naturalmente
//-------------------------------- void CheckOpen1() // define first function { int res; if( Bid==Close[1]+4*Point) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } } void CheckOpen2() // define second function { int res; if( Bid==Close[1]+8*Point) // change 8 Point ( 4 ==> 8 ) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } } // I DONT KNOW.............. //-------------------------------- / our scenario void CheckForOpenS1()= true; void CheckOpen1() void CheckOpen2() //-------------------------------- / OR LIKE THESE int res; if ( CheckForOpenS1() == true) { res= CheckOpen1() CheckOpen2(); }
SOLO CANDELA - Come aprire la posizione? - dovrebbe essere il prossimo argomento. Moderatore cosa ne pensi? Posso?
Implementiamo lo scenario selezionato
Come inviare l'ordine?
Abbiamo un ordine
Ma cosa dovrei fare per aprire due posizioni in una funzione?
Abbiamo ilnostro scenario CheckForOpenS1() in questo scenario compriamo due volte se il nostro prezzo sarà nel posto giusto, naturalmente
Non capisco davvero quello che stai chiedendo . . . non ti stai rendendo molto chiaro . . . o forse sono solo io.
Questo codice vi causerà dei problemi però . . .
if( Bid == Close[1] + 4 * Point)
Leggi questo thread:Può il prezzo != prezzo ?
potrebbe altrimenti
come scrivere un semplice EA con diversi scenari di eventi
era una piccola candela - aprire Funzioni 1
era la candela media - aprire Funzioni 2
era una grande candela - aprire Funzioni 3
switch () è appropriato a questo punto, penso
La funzione 1 apre 1 posizione e si assicura che si chiuda
La 2 apre 2 posizioni custodendole e chiude
La tre apre 2 posizioni ma ad un prezzo diverso ....
ogni volta che abbiamo una candela, ogni volta c'è un'altra funzione che fa cose diverse
So che non si può scrivere per me, ma qualsiasi consiglio....
Come promesso, l'ho guardato di nuovo, ma ancora non ha senso per me, mi dispiace.
Questo non funzionerà mai:
double bull() // check first candle -mabey is bull { double A=Open[1]; // we use double because euro/usd have point example 1.9865 double B=Close[1]; double C=B-A; return(C); // <-- C is probably never 1,2,3,4,5..... } // when we have bull catalog/ segregate him.. switch(bull()) // <-- the expression here is something like 0.00123. None of your case statements will be executed. { case 1 : break; // nothing happen case 2 : break; // nothing happen case 3 : break; // nothing happen case 4 : CheckForOpenS1(); break; // start CheckForOpenS1()- take it and go thrue with this.. we will see want is '...S1' case 5 : CheckForOpenS2(); CheckForOpenS3() break; // start CheckForOpenS2() and S3 .... }
Leggete qui su come usare l'interruttore: https://docs.mql4.com/basis/operators/switch
Questo non è affatto chiaro:
void CheckOpen2() // define second function { int res; if( Bid==Close[1]+8*Point) // change 8 Point ( 4 ==> 8 ) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } }
L'espressione uguale forse non è voluta, ma cosa dovrebbe essere?
Se dovrebbe essere < allora invierà immediatamente un ordine SELL quando arriva una nuova barra (poiché il prezzo di apertura della nuova barra è forse < del prezzo di chiusura della barra precedente+8*Point)
Se si legge > allora aspetterà che il prezzo si muova un po' verso l'alto e poi invierà un ordine SELL. Non capisco bene la tua strategia, quindi forse è voluta così.
Potrei anche immaginare che tu intenda:
if(Bid<Close[1]-8*Point)
Stai facendo trading con un broker a 4 cifre dove 1 Punto è uguale a 1 Pip? Altrimenti il prezzo deve muoversi solo di 0.8 pip, che probabilmente non è quello che vuoi (e lo spread potrebbe confondere ulteriormente).
Penso che dovresti ripassare il tuo codice e correggerlo dove puoi. Sentiti libero di fare altre domande se ne hai di specifiche. Per favore, sii consapevole che la tua strategia può funzionare in modo completamente diverso, solo perché un codificatore ha frainteso ciò che hai voluto dire.
Lamia strategia è
se la candela appare BULL da 4 a 5 punti , dopo la candela (sempre, in qualsiasi condizione) prepararsi a inviare due ordini di acquisto (se il prezzo raggiunge il nostro livello richiesto per comprare uno, e come raggiungere buy2)
se la candela appare BULL da 6 a 7 punti, dopo la candela (mai, in qualsiasi condizione) preparatevi a inviare tre ordini diacquisto (se il prezzo raggiunge il nostro livello richiesto per comprare uno, e come raggiungere buy2e 3)
Ho un piccolo errore da qualche parte nel Bid o Ask perché EA non funziona ... (non riesco a trovare questo errore , ma normalmente EA funziona molto bene per quello che ho scritto .. acquista e chiudere), ma mostra il mio piano tecnico.
FACCIO CORREGGERE CHE FUNZIONA A ORA
Come si guarda al fondo diventa molto affollato e a volte sostituisce gli scenari EA Bull4 e scenario si apre Bull6 Bull4 e come ho capito improvvisamente cambiare idea e finire il Bull6 Bull6
Può essere semplificato ?
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #define MAGICMA 20050610 //+------------------------------------------------------------------+ //| Calculate open positions HOW MEANY OF THIS | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; } } //---- return orders volume return(buys); } //+------------------------------------------------------------------+ //| Calculate candle | //+------------------------------------------------------------------+ bool BULL4() { if(Close[1]-Open[1]>=4*Point && Close[1]-Open[1]<=5*Point) return(true); } bool BULL6() { if(Close[1]-Open[1]>=6*Point && Close[1]-Open[1]<=7*Point) return(true); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpenBULL41() { int res; if(Bid==Close[1]+3*Point) { res=OrderSend(Symbol(),OP_BUY,0.41,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue); return; } } void CheckForOpenBULL42() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.42,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue); return; } } void CheckForOpenBULL61() { int res; if(Bid==Close[1]+4*Point) { res=OrderSend(Symbol(),OP_BUY,0.61,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } void CheckForOpenBULL62() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.62,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } void CheckForOpenBULL63() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.63,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForCloseBULL() { RefreshRates(); if(OrderOpenPrice()+4*Point< Ask) for (int i = OrdersTotal(); i >= 0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol()) { bool ticket = true; if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid,1,Black); } } } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { if(BULL4()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL41(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL42(); else CheckForCloseBULL(); //---// if(BULL6()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL61(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL62(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==2) CheckForOpenBULL63(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==3) CheckForOpenBULL63(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==4) CheckForCloseBULL(); } //+------------------------------------------------------------------+
Lamia strategia è quella di
se la candela appare BYK da 4 a 5, dopo la candela (mai, in qualsiasi condizione) prepararsi a inviare due ordini di acquisto di dati (se il prezzo raggiunge il nostro livello richiesto di acquistare uno, e come raggiungere zkup 2)
se la candela appare BYK da 6 a 7, dopo la candela (sempre, in qualsiasi condizione) preparatevi a inviare tre ordini di acquisto (se il prezzo raggiunge il nostro livello richiesto per comprare uno, e come raggiungere zkup 2 e 3)
Ho un piccolo errore da qualche parte nel Bid o Ask perché EA non funziona ... (non riesco a trovare questo errore , ma normalmente EA funziona molto bene per quello che ho scritto .. acquista e chiudere), ma mostra il mio piano tecnico.
Come si guarda il fondo diventa molto affollato e a volte sostituisce gli scenari EA Bull4 e scenario si apre Bull6 Bull4 e come ho capito improvvisamente cambiare idea e finire il Bull6 Bull6
Può essere semplificato ?
BYK?
Questo è sbagliato . . .
for (int i = OrdersTotal(); i >= 0;i--)
. . . le posizioni partono da 0, quindi è necessario contare in basso da OrdersTotal() - 1
Si fa così . . . .
void CheckForCloseBull() // close ALL AT ONCE buy of course { RefreshRates(); if( OrderOpenPrice() > Ask+6*Point)
. . . si ottiene l'OrderOpenPrice(), ma per quale ordine? Avrete più ordini aperti . . .
Usate la variabileres per contenere il valore di ritorno delle vostre chiamate OrderSend() . . . e cosa ci fate ? niente, perché ?
Cosa sono i valori di ritorno delle funzioni? Come si usano?
Ottima risposta RaptorUK
1. problema di res
Sto studiando EA risoluzione media mobile c'è solo 3 volte, tutti in funzione del tempo, dopo per esso non esiste.
Laprima volta viene utilizzato per informazioni "ciao saremo utilizzare res"
una seconda volta per inviare l'ordine. OrderSend restituisce il numero di ordini, che è il nostro res = 343321, abowe la funzione 'void CheckForOpen () " res non esiste.
ma...
Penso che se il "void CheckForOpen ()" Osservare la verità di questo comando OrderSelect in qualche modo portare quel numero tranne "void CheckForOpen ()" Proverò ..
2. Problema OrderOpenPrice()
hai assolutamente ragione, ma questa sintassi funziona sorprendentemente bene :) proverò a fare qualcosa in quel posto
3. OrdersTotal() - 1hai assolutamente ragione,
4. BYK (POLONIA)= BULL il traduttore ha un problema
Per coloro che ancora non capiscono il mio EA scrivere una storia: D hehehe
Tutti i passi che facciamo, sono le funzioni. Ora sto scrivendo al computer è una funzione ,guardo un programma televisivoè la seconda funzione, ecc.
Ora passiamo alla cucina ...
Abbiamo un libro di cucina, aprire l' indice e leggere in sequenza i punti
Prima Come fare le braciole di maiale - mettere la carne in una ciotola, aggiungere sale, peperoncino, sbucciare le patate
A sinistra l'evento - le caratteristiche giuste , e alcuni di tema - no a meno che facile!
Dopo aver letto come fare le braciole di maialecominciano a farlo, a fare le cose. Bistecca ottiene 25 minuti, e come ho iniziato ad avere una fine.
E'stato cinque minuti M5 ( cinque minuti dopo)si inizia a leggere il punto successivo un libro di cucina.
Secondo Come fare un'insalata - Pelare le carote, sbucciare le cipolle, e altre stronzate
E qui avviene la magia, perché ha creato il doppio, l'acero (seconda persona). Lo facciamo su costolette di maiale e insalata allo stesso tempo.Iniziamo adavere in cucina due persone in una.
Più punti si leggono, più persone in cucina appaiono. Le persone in cucina scompariranno dopo aver completato i loro compiti e lavare i piatti.
L'evento è candele - dispone di varie opzioni per l' acquisto e la vendita o la chiusura.
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
SOLO CANDELE - Come catalogare o segregare le candele?
PER FAVORE CORREGGETEMI!
Abbiamo candela rialzista e ribassista voglio segregare questo
È proprio come ilpastore. il pastore ha una fattoria, una fattoria e ha delle pecore.
Quando è stagione per radere le pecore, il pastore Mr. JOHN va alla fattoria, cattura le pecore e ...
La prima pecora catturata è troppo piccola da radere - John lascia andare.
Laprossima pecora è buona John prende le forbici e la pecora è nuda
Laprossima pecora è buona e ha una grande lana - John prende le forbici GRANDI e la pecora è nuda
Laprossima pecora è Ariete - John prende il coltello e l'Ariete è eunuco in questo momento
Voglio fare lo stesso con candela / bar
La nostra candela sta andando Bar[0].... noi aspettiamo..... lei sta andando, noi aspettiamo.... 15 minuti (M15) ed eccolo! ... cosa c'è? controlla!
Se ho Bullisch Candle e Candle (prezzo di apertura [1]- prezzo di chiusura [1]) hanno 2 punti troppo piccoli - lasciare andare, non facciamo nulla
Se ho Bullisch Candle e Candela (prezzo aperto [1]- prezzo di chiusura [1]) hanno 4 punti - poi avviare il programma
CheckForOpenS1(); avviare la funzione di acquisto se il nostro prezzo ottiene + 4 punti sopra la nostra candela (scenario1)
Se ho una candela Bullisch e la candela (prezzo aperto [1]- prezzo chiuso [1]) ha 5 punti -questa è una candela molto grande- allora avvia il programma
CheckForOpenS2(); avvia la funzione di acquisto se il nostro prezzo ottiene + 14 punti sopra la nostra candela (scenario2)
Voglio questa strega ogni candela, voglio iniziare programma BUY se ho grande candela, se ho troppo piccola candela sarò in attesa per il prossimo
Così... questo è in corretto ma ho idea :)
Per favore non scriva nessuna cosa necessaria.