trader781: Non avevo intenzione di leggerlo. Dice "da testare sul mercato". I miei prodotti non saranno mai sul mercato.
Sto parlando della rivista nel tester
Aggiunto: Assemblare il codice allo stato normale, rivederlo, poi eseguirlo nel tester e leggere gli errori nel log. Mi stai dando dei frammenti di codice qui.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Sì, hai ragione, è solo che il codice è scritto in uno stile tale che il precedente interlocutore lo ha interpretato male.
E per controllare?
//| TestLogics.mq4 |
//| Copyright 2016, Artem A. Trishkin, Skype artmedia70 |
//| https://login.mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, Artem A. Trishkin, Skype artmedia70"
#property link "https://login.mql5.com/ru/users/artmedia70"
#property version "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int Value=0; // Количество имеющихся ордеров
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
if(Value>0) Alert("1. Количество ордеров=",Value);
else Alert("2. Это код после else");
{
Alert("3. Ордера отсутствуют");
}
}
//+------------------------------------------------------------------+
E controllare?
Cavolo, davvero, ora ho rivisto il codice originale e mi sono sbagliato. Lo stile di scrittura è un po' storto - mi ha confuso.
Ricontrollato, rimosso l'"extra".
ladivisione per zero non è andata da nessuna parte
Ricontrollato, rimosso l'"extra".
ladivisione per zero non è andata da nessuna parte
Ricontrollato, rimosso l'"extra".
La divisione per zero non è scomparsa
Perché non c'è nessun controllo se il divisore è diverso da 0. Che senso ha eseguire ulteriore codice quando non ci sono ordini e 0 lotti?
Metti un controllo su di esso
{
double avg_price=0;
price=0;
bool z=true;
double orderlots=0;
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()==FindLastOType()))
{
price+=OrderOpenPrice()*OrderLots();
orderlots+=OrderLots();
}
}
if(orderlots==0) { return; } // если ничего нет - выходим
avg_price=NormalizeDouble(price / orderlots,Digits);
if(FindLastOType()==OP_BUY) tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);
if(FindLastOType()==OP_SELL) tp=NormalizeDouble(avg_price-TakeProfit*Point(),Digits);
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) &&(OrderType()==FindLastOType()))
z=OrderModify(OrderTicket(),OrderOpenPrice(),0,tp,0);
if (!z)
Print("Ошибка функции модифицирования");
}
}
Metti un controllo su di esso
Ma mi mancavano i lotti, grazie.
Va bene perderselo, non va bene nonleggere la rivista, è tutto lì.
Non avevo intenzione di leggerlo. Dice 'controllare nel mercato'. I miei prodotti non saranno mai sul mercato.
sul dividere per zero.
e quello sopra? Si suppone che si prendada lì.
{
prezzo+=OrderOpenPrice()*OrderLots();
orderlots+=OrderLots();
}
}
if(orderlots==0) {return; }// se non c'è niente, exit
avg_price=NormalizeDouble(price / orderslots,Digits);
if(FindLastOType()==OP_BUY) tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);
if(FindLastOType()==OP_SELL) tp=NormalizeDouble(avg_price-TakeProfit*Point(),Digits);
Non avevo intenzione di leggerlo. Dice "da testare sul mercato". I miei prodotti non saranno mai sul mercato.
Sto parlando della rivista nel tester
Aggiunto: Assemblare il codice allo stato normale, rivederlo, poi eseguirlo nel tester e leggere gli errori nel log. Mi stai dando dei frammenti di codice qui.