Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Potete vedere i commenti, che hanno dovuto essere rimossi.
Lo scopo degli array TradeOrdersArray e ClosedOrdersArray è descritto lì. E altri ancora.
Le funzioni CorrectPrice() e DrawArrowOnChart() non sono ancora state definite.
L'ho postato qui - http://forexsystems.ru/phpBB/viewtopic.php?p=4380#4380
Ho dovuto trascinare tutte le variabili dal blocco init() all'intestazione - altrimenti le variabili non sono visibili. Il mio primo errore.
La seconda è che il compilatore sta imprecando al mio tentativo di impostare il valore predefinito di un parametro nella funzione a NULL.
In terzo luogo, il compilatore non va in crash quando una funzione non definita/non definita (CorrectPrice() e DrawArrowOnChart() ) si incontra nel codice.
Forse si imbatterà in NULLA e non si lamenterà più.
La definizione della funzione è stupida - ho copiato dal dizionario, quindi se gli sviluppatori mi incolperanno per la dichiarazione sbagliata ....
//+------------------------------------------------------------------+ //| Redefine OrderSend() function | //+------------------------------------------------------------------+ int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=[b]NULL[/b],int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) { if (CorrectPrice(symbol,cmd,price,myCurrentTime)) { TradeOrdersArray[myOrdersTotal,0]= symbol; TradeOrdersArray[myOrdersTotal,1]=pool_pos; TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1; TradeOrdersArray[myOrdersTotal,3]=cmd; TradeOrdersArray[myOrdersTotal,4]=volume; TradeOrdersArray[myOrdersTotal,5]=price; TradeOrdersArray[myOrdersTotal,6]=slippage; TradeOrdersArray[myOrdersTotal,7]=stoploss; TradeOrdersArray[myOrdersTotal,8]=stoploss; TradeOrdersArray[myOrdersTotal,9]=comment; TradeOrdersArray[myOrdersTotal,10]=magic; TradeOrdersArray[myOrdersTotal,11]=myCurrentTime; DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color); myOrderTicket++; myOrdersTotal++; pool_pos++; return(myOrderTicket); } else return(-1); }Domani cercherò di ridefinire OrderClose() - lì sarà più facile spiegare l'idea dei test.
PS Due persone lo hanno già scaricato - c'è speranza
Rosh, ho capito come inserire il testo russo in questo forum (ho dovuto capirlo da solo :)
Quando copi il codice nell'editor, dovresti metterlo in russo. E quando si incolla in un forum, rispettivamente, anche.
E tutti i commenti saranno salvati ;)
Ecco un buon esempio per la discussione sull'operatore vuoto.
La conversione implicita dei tipi è molto peggio e più pericolosa di ";" dopo una parentesi.
In questo caso abbiamo un errore esplicito, ma il compilatore non genera nemmeno un avvertimento.
Rosh,
la pagina è andata via di nuovo.
int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) { if (CorrectPrice(symbol,cmd,price,myCurrentTime)) { TradeOrdersArray[myOrdersTotal,0]= symbol;// записали иструмент TradeOrdersArray[myOrdersTotal,1]=pool_pos;// записали номер в списке терминала TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;// записали номер тикета у брокера TradeOrdersArray[myOrdersTotal,3]=cmd;// записали тип ордера TradeOrdersArray[myOrdersTotal,4]=volume;// записали размер ордера TradeOrdersArray[myOrdersTotal,5]=price;// записали цену открытия TradeOrdersArray[myOrdersTotal,6]=slippage;// записали проскальзывание в пунктах TradeOrdersArray[myOrdersTotal,7]=stoploss;// записали stoploss TradeOrdersArray[myOrdersTotal,8]=stoploss;// записали takeprofit TradeOrdersArray[myOrdersTotal,9]=comment;// записали комментарии TradeOrdersArray[myOrdersTotal,10]=magic;// записали MagicNumber TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;// записали дату выставления/открытия ордера DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color); myOrderTicket++; myOrdersTotal++; pool_pos++; return(myOrderTicket); } else return(-1); } //+------------------------------------------------------------------+Volevo solo che Renat lo guardasse da solo e trovasse l'errore.
Ma sembra che non guardino qui o che pensino che il mio post sia stupido.
(citazione - "non rispondiamo a domande stupide..." - :))
Questo è sull'argomento degli svantaggi della sintassi MQL (e/o del compilatore).
Il compilatore non risponderà a questo errore, anche se potrebbe avvertirvi di questo.
Proibirei semplicemente tali errori in un linguaggio (conversione implicita dei tipi).
Per essere precisi.
L'array TradeOrdersArray è di tipo double.
In diversi punti, gli hai assegnato dei valori di stringa.
Per esempio:
Il compilatore mangerà tutto, e anche il tester funzionerà, ma non nel modo che volevate.
Ed è difficile cercare un tale errore, soprattutto se è stato fatto un mese fa,
e si è presentato solo oggi quando hai aggiunto qualche riga al programma.
(Plz., aggiusta lo script - la pagina è sparita, non è conveniente guardare).
Ecco questa dichiarazione
Ma ho appena copiato dal dizionario per modello.
Ho il sospetto che tu non possa.
Solo in 2 diversi array.