ad esempio la stringa
bool neutral = OrderClosePrice() == OrderOpenPrice();
probabilmente dovremmo modellare il funzionamento delle condizioni algoritmiche in questo modo:
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
e le altre due condizioni nella stessa vena
A proposito, l'ultimo affare nella storia non è sempre l'ultimo affare nel tempo.
A proposito, l'ultimo affare nella storia non è sempre l'ultimo affare nel tempo.
es. linea
forse dovremmo formare il lavoro di condizioni algoritmiche come questo:
bool neutral=false;
if(NormalizeDouble(OrderClosePrice(),_Digits) == NormalizeDouble(OrderOpenPrice(),_Digits)neutral=true;
e le altre due condizioni nella stessa vena
ma comunque, sicuramente controllerò e riscriverò. Vi farò sapere il risultato.
Sì, ho rimosso il campionamento temporale, ma ancora non funziona... Ho appena usato questo blocco prima in altri sistemi e ha funzionato perfettamente in questa parte.
ma comunque, sicuramente controllerò e riscriverò. Vi farò sapere il risultato.
queste variabili sono resettate da qualche parte?
ObchMin = ObchMin + SumPosOrder; // Подсчет общего минуса Minus++; //Подсчет отрицательных сделок Sdelok++; //Подсчет количества сделок
Forse passare da quello mappato.
Rimuoverò la raccolta delle statistiche da questa funzione per ora, e il meno generale e le statistiche in un'altra (la funzione separata produrrà)
Scrivere per blocchi.
Raccogliere statistiche e calcolare meno e più (meno e più sono variabili globali)
if(OrderSelect((OrdersHistoryTotal() - 1), SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol) { if(OrderTicket() != Tiket2) { bool profit1 = false; if(OrderClosePrice() > 0) { profit1 = true; } bool loss1 = false; if(OrderClosePrice() < 0) { loss1 = true; } SumPosOrder = OrderLots(); Tiket2 = OrderTicket(); Print(OrderCloseTime()); if(loss1) { ObchMin = ObchMin + SumPosOrder; Minus++; Sdelok++; } if(profit1) { ObchPlus = ObchPlus + (SumPosOrder * 0.8); } if(profit1 && ObchPlus < ObchMin) { Pobeda++; Sdelok++; } if(profit1 && ObchPlus > ObchMin) { ObchPlus = 0; ObchMin = 0; Pobeda++; Sdelok++; } }
Blocco 2 - selezione della variabile n per il calcolo (o meglio la selezione) del tasso
int GetN() { int n = 0; for(int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderMagicNumber() == Magic && OrderSymbol() == _Symbol) { bool profit = false; if(OrderClosePrice() > 0) profit = true; bool loss = false; if(OrderClosePrice() < 0) loss = true; } if(loss) { n++; } if(n >= MartinSteps) { n = 0; break; } if(profit && ObchPlus < ObchMin) { n++; } if(profit && ObchPlus > ObchMin) { n = 0; break; } } Print(n); return n; } double SelectVolume(int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; } //+------------------------------------------------------------------+
Questo sarebbe probabilmente corretto...
Continuo a non capire la logica.
Come mai?
bool profit = false; if(OrderClosePrice() > 0) profit = true; bool loss = false; if(OrderClosePrice() < 0) loss = true;
Come può il prezzo di chiusura dell'ordine essere inferiore a zero?
L'ordine BUY è in profitto se il prezzo di chiusura è superiore al prezzo aperto
ecco la condizione di un buy plus (escluse le commissioni e lo swap):
OrderClosePrice() > OrderOpenPrice()Se è il contrario, è un meno
L'ordine BUY è in profitto se il prezzo di chiusura è superiore al prezzo aperto
ecco la condizione di un buy plus (escluse le commissioni e lo swap):
Se è il contrario, è un menoDato che sto scrivendo per le opzioni binarie ho fatto le cose un po' diversamente:
if(OrderProfit() > 0)
Questo sarebbe probabilmente corretto?
Forse passare da quello mappato.
Rimuoverò la raccolta delle statistiche da questa funzione per ora, e il totale meno e le statistiche in un'altra (funzione separata che produrrò)
Scrivere per blocchi
Cumulativo meno e più (meno e più sono variabili globali)
Blocco 2 - selezione della variabile n per il calcolo (o meglio la selezione) del tasso
Questo sarebbe probabilmente corretto...
Non voglio interferire e non ho nemmeno guardato il tuo codice e i tuoi consigli...
double SelectVolume(int n) { return n == 0 ? Volume1 : n == 1 ? Volume2 : n == 2 ? Volume3 : n == 3 ? Volume4 : n == 4 ? Volume5 : n == 5 ? Volume6 : n == 6 ? Volume7 : n == 7 ? Volume8 : n == 8 ? Volume9 : n == 9 ? Volume10 : Volume1; }
ha attirato la mia attenzione. A questo proposito, una domanda: non è più facile e più leggibile usare l'operatore switch
double SelectVolume(int n) { double Volume = 0.0; switch(n) { case 1 : Volume = Volume2; break; case 2 : Volume = Volume3; break; case 3 : Volume = Volume4; break; case 4 : Volume = Volume5; break; case 5 : Volume = Volume6; break; case 6 : Volume = Volume7; break; case 7 : Volume = Volume8; break; case 8 : Volume = Volume9; break; case 9 : Volume = Volume10; break; default : Volume = Volume1; break; } return(Volume); }Penso che sia più facile da leggere e capire. Forse funziona anche un po' più velocemente.
Ti è già stato dato un consiglio su tutto l'algoritmo, non voglio interferire e non ho nemmeno guardato il tuo codice e lo stesso consiglio... Ma questo
ha attirato la mia attenzione. A questo proposito, una domanda: non è più facile e più leggibile usare l'operatore switch
Penso che sia più facile da leggere e capire. Forse funziona anche un po' più velocemente.All'inizio l'ho fatto come l'ho trovato, ha funzionato, quindi non ho pensato a migliorarlo.
Sai come si dice: funziona, non toccarlo.
Ma ora cercherò sicuramente di applicare questo metodo. Perché è necessario per imparare e svilupparsi.
Ma ora mi occuperò solo della mia variabile n. Non vuole essere contato.
sempre n = 0 (finora)
- 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
Scrivere il codice
Il compito era originariamente:
Trovare l'ultimo ordine chiuso.
Controllare se si è chiuso nella posizione più o meno.
Conta il numero di scambi
Conta il numero di scambi più e meno.
Calcola l'importo della scommessa.
Se la negoziazione è redditizia (e il totale meno = 0) allora la scommessa numero 1
Se la negoziazione è meno, allora conta il meno e la scommessa numero 2
Se più, ma meno > 0 allora la prossima scommessa.
Ma per qualche motivo non conta correttamente il numero di scommesse e l'importo della scommessa...