Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 508

 
Ho attaccato una martingala. A metà giornata ho attaccato l'Expert Advisor in questa forma (aveva già fatto qualche affare dello stesso EA, ma in uno stato incompiuto prima), - l'EA ha funzionato bene, la martingala ha funzionato, ha tolto le perdite per mezza giornata in più. Il giorno dopo, ho acceso la piattaforma al mattino, sono andato a lavorare, la sera - un affare. La martingala aumenta il lotto per un trade perdente, altrimenti - il lotto standard.
void OnTick()
  {
   datetime EaStartTime = StringToTime(StartTime);  // время начала работы советника
   datetime EaEndTime = StringToTime(EndTime);      // время окончания работы советника
   datetime CurrTime = TimeCurrent();               // это если нужно взять время терминала
   if(CurrTime<EaStartTime || CurrTime>=EaEndTime)
      return;                                       // если еще не время торговать - выход
     {
      MacdCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_MAIN,0);
      SignalCurrent=iMACD(NULL,0,InpFastEMA,InpSlowEMA,InpSignalSMA,Macd_Applied_Price,MODE_SIGNAL,0);
      SignalMAPrevious=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,1);
      SignalMAThis=iMA(NULL,0,InpMAPeriod,InpMAShift,InpMAMethod,MA_Applied_Price,0);
      SignalParabolic=iSAR(NULL,0,InpSARStep,InpSARMaximum,0);
      SignalStochastic_5=iStochastic(NULL,5,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,1,0);
      MainStochastic_5=iStochastic(NULL,5,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,0,0);
      SignalStochastic=iStochastic(NULL,0,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,1,0);
      MainStochastic=iStochastic(NULL,0,InpKPeriod,InpDPeriod,InpSlowing,MODE_SMA,0,0,0);
      SignalCCIPrevious=iCCI(NULL,0,InpCCIPeriod,0,1);
      SignalCCIThis=iCCI(NULL,0,InpCCIPeriod,0,0);
      if(CountTrades()==0) CheckForOpen();
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
 {if(ModLots())
  {
      //-----Ставим ордер на покупку.
    if(SignalCurrent<MacdCurrent && SignalMAPrevious<SignalMAThis && 
      Ask>SignalParabolic && SignalStochastic_5<MainStochastic_5&&SignalStochastic<MainStochastic&&
      SignalCCIPrevious<SignalCCIThis)
      {
       ticket=OrderSend(NULL,OP_BUY,lot,Ask,slippage,0,0,exptime,magic,0,Blue);
       if(ticket>0)
          return;
      }
//-----Ставим ордер на продажу.
    if(SignalCurrent>MacdCurrent && SignalMAPrevious>SignalMAThis && 
      Bid<SignalParabolic && SignalStochastic_5>MainStochastic_5&&SignalStochastic>MainStochastic&&
      SignalCCIPrevious>SignalCCIThis)
      {
       ticket=OrderSend(NULL,OP_SELL,lot,Bid,slippage,0,0,exptime,magic,0,Red);
       if(ticket>0)
          return;
      }
  }
 }
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
            count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
bool ModLots()
  {
    for(int i=OrdersHistoryTotal()-1;i>=0;i--)
      {
       if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
       if((OrderMagicNumber()==magic) && (OrderSymbol()==Symbol()))
         {
          if(OrderProfit()<0)
            {lot=OrderLots()*LotMarti;  break;}
          else { lot=Lots; break;}
         }
      }
   return(true);
  }
//+------------------------------------------------------------------+
 
Salve. Il manuale di mql4 dice che la gestione degli eventi Timer e ChartEvent non è supportata nello strategy tester. Di conseguenza, i pulsanti (OBJ_BUTTON) non funzionano (più precisamente, non succede nulla quando si clicca). La versione di prova di questo EA, tuttavia, per qualche motivo non supporta questa regola. Per favore, ditemi perché questo accade e come far funzionare i pulsanti nel tester?
 
Maks_Knyazev:
Salve. Il manuale di mql4 dice che l'elaborazione degli eventi Timer e ChartEvent non è supportata nel tester delle strategie. Di conseguenza, i pulsanti (OBJ_BUTTON) non funzionano (più precisamente, non succede nulla quando si clicca). La versione di prova di questo EA, tuttavia, per qualche motivo non supporta questa regola. Per favore, ditemi perché questo accade e come far funzionare i pulsanti nel tester?

Sì, non funzionano. Dovete controllare i pulsanti manualmente nel tester, in questo modo

CButton *cbSell, *cbBuy;

//проверяем из OnTick в тестере 
void CheckButtons()
{
    if(cbSell.Pressed())
    {
        OpenOrderWithCheck2(Symbol(), OP_SELL, 0.1, Bid, 50, 0, 0, "", 1, 0, clrDeepSkyBlue);
        cbSell.Pressed(false);
    }    
    if(cbBuy.Pressed())
    {
        OpenOrderWithCheck2(Symbol(), OP_BUY, 0.1, Bid, 50, 0, 0, "", 1, 0, clrRed);
        cbBuy.Pressed(false);
    }
    ChartRedraw();
}

 
Alexey Volchanskiy:

Sì, non funzionano. Nel tester, dovete controllare i pulsanti manualmente, come questo

Grazie mille! Esiste una letteratura che descrive questo tipo di cose?
 

flint17480, 2016.02.01 08:58

Salve. Non ha chiuso il profitto sulla candela 09-47 minuti su EURUSD il profitto era a 1.08428 la candela è andata a 1.08420. Cosa fare? Grazie in anticipo.
 
<br / translate="no">

flint17480, 2016.02.01 08:58

Salve. Ho perso il mio profitto su EURUSD a 09-47, era a 1,08428 ed è salito a 1,08420. Puoi dirmi cosa fare? Grazie in anticipo.

Hai bisogno di più informazioni:

  1. Tipo di posizione aperta: VENDERE o COMPRARE?
  2. Sapevi che il prezzo nel terminale è disegnato dal BID?

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

Salve. Non ha chiuso il profitto sulla candela 09-47 minuti su EURUSD il profitto era a 1.08428 la candela è andata a 1.08420. Cosa fare? Grazie in anticipo.

Dovresti prestare attenzione allo spread, perché le posizioni corte sono chiuse su Asc, mentre la candela è disegnata su Bid. Spread superiori a 8 pips per un cinque cifre è normale per la maggior parte delle coppie di valute.

 
Karputov Vladimir:

flint17480, 2016.02.01 08:58

Salve. Non ha chiuso il profitto sulla candela 09-47 minuti su EURUSD il profitto era a 1.08428 la candela è andata a 1.08420. Cosa fare? Grazie in anticipo.
Spunta le citazioni da scrivere. Devo mandarle il mio preventivo? Anche se ce ne sono molti in kodobaz. Avevi ragione sullo spread.
 
Buon pomeriggio a tutti) Condividete il codice per uno stop loss mobile - per guidare il prezzo )))) Grazie in anticipo
 
Tema97:
Buon pomeriggio a tutti) Condividete il codice per uno stop loss mobile - per guidare il prezzo )))) Grazie in anticipo.
Cosa non ti piace del trailing stop? È già incorporato nel terminale
Motivazione: