Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 641

 
Ciao a tutti! Posso chiedere aiuto? Ho resettato i valori delle variabili globali per qualche motivo. Ho scritto un semplice codice che mostra tutto.
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   GlobalVariableSet("Mflag",0);
//---
   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
//---

 Print("до ",GlobalVariableGet("Mflag"));
 GlobalVariableSet("Mflag",1);
 Print("после ", GlobalVariableGet("Mflag"));
     
     
  }

Il risultato è:

prima di 0,0

dopo 1.0

prima di 0,0

dopo 1.0

a 0,0

Anche se imposta 0 solo quando chiama OnInit, che, come sapete, viene chiamato una volta all'inizio dell'EA.

Qual è il problema, ditemi!

 
paylesss:
Ciao a tutti! Posso avere un aiuto qui? Ho i valori delle variabili globali resettati per qualche motivo. Ho scritto un semplice codice che mostra tutto.

Il risultato è:

prima di 0,0

dopo 1.0

prima di 0,0

dopo 1.0

a 0,0

Anche se imposta 0 solo quando chiama OnInit, che, come sapete, viene chiamato una volta all'inizio dell'EA.

Qual è il problema, ditemi!

Ho controllato sull'ultima build:

2016.10.12 12:15:07.743 Terminal        MetaTrader 5 x64 build 1445 started (MetaQuotes Software Corp.)
2016.10.12 12:15:07.761 Terminal        Windows 10 Pro (x64 based PC), IE 11.00, UAC, Intel Core i3-3120 M  @ 2.50 GHz, RAM: 4737 / 8077 Mb, HDD: 40749 / 233310 Mb, GMT+02:00
2016.10.12 12:15:07.761 Terminal        C:\Users\KVN\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

Codice Expert Advisor:

//+------------------------------------------------------------------+
//|                                                 ProjectName.mql5 |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh>
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   GlobalVariableSet("Mflag",0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   Print("до ",GlobalVariableGet("Mflag"));
   GlobalVariableSet("Mflag",1);
   Print("после ",GlobalVariableGet("Mflag"));
  }
//+------------------------------------------------------------------+

Risultato:

2016.10.12 12:29:50.934 Tests (GBPUSD,M5)       до 0.0
2016.10.12 12:29:50.934 Tests (GBPUSD,M5)       после 1.0
2016.10.12 12:29:51.400 Tests (GBPUSD,M5)       до 1.0
2016.10.12 12:29:51.400 Tests (GBPUSD,M5)       после 1.0
2016.10.12 12:29:51.819 Tests (GBPUSD,M5)       до 1.0
2016.10.12 12:29:51.819 Tests (GBPUSD,M5)       после 1.0
2016.10.12 12:29:53.199 Tests (GBPUSD,M5)       до 1.0
2016.10.12 12:29:53.199 Tests (GBPUSD,M5)       после 1.0
2016.10.12 12:29:53.251 Tests (GBPUSD,M5)       до 1.0
2016.10.12 12:29:53.251 Tests (GBPUSD,M5)       после 1.0
2016.10.12 12:29:53.341 Tests (GBPUSD,M5)       до 1.0
2016.10.12 12:29:53.341 Tests (GBPUSD,M5)       после 1.0

Nessun errore rilevato, il codice funziona correttamente.

File:
Tests.mq5  3 kb
 

Grazie! Riavviare il computer ha aiutato! È un peccato, sono stato seduto qui tutta la mattina))

 
Ciao, potresti dirmi se è possibile implementare una formula nel codice per un tester?
Se(la rete cloud mql5 è spenta e il test dura più di 2-5 ore (per esempio)) allora accendi la rete cloud mql5
 
newnek:
Ciao, potresti dirmi se è possibile implementare una formula nel codice per un tester?
Se(la rete cloud mql5 è disabilitata e il test richiede più di 2-5 ore (per esempio)) allora abilita la rete cloud mql5
Penso che MQL5 non abbia ancora funzioni di controllo per abilitare/disabilitare MQL5 Cloud Network. Se iniziate subito i test dalla linea di comando, potete connettere la rete.
 
Karputov Vladimir:
Sembra che MQL5 non abbia ancora funzioni per controllare la connessione/disconnessione della rete MQL5 Cloud. Se iniziate i test immediatamente dalla linea di comando, potete connettere la rete.
Sì, l'ho visto, voglio solo attivare il cloud dopo un po' di tempo, senza spendere soldi in pagamenti, ma quando sono sicuro che tutto è stato fatto nel mio Expert Advisor e non ho smesso di testarlo
 
newnek:
Sì, l'ho visto, voglio solo accendere il cloud dopo un po' di tempo, non per spendere soldi per pagare, ma quando sono sicuro di aver fatto tutti gli accordi nell'EA e non ho smesso di testarlo
Allora WinAPI è l'unico modo per aiutare.
 
Vladislav Andruschenko:
Grazie.
 
Karputov Vladimir:
Allora solo WinAPI aiuterà.
Non sono ancora arrivato a questo punto
 

ha scritto un gufo, ma per qualche motivo il trailing stop non funziona... Quale potrebbe essere la ragione?

//+------------------------------------------------------------------+
//|                                                         DDos.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
// Переменные, изменяемые программно
int Corr;                    // Автоматический корректор котировок, 10 для 5-значных котировок и 1 для 4-значных
int TwoDigCorr;              // Корректор для работы с двухзначными котировками
bool New_Bar=false;          // Флаг образования нового бара
int Oppoz;                   // Флаг выставления противоположной отложки при СЛ
int TradeFlag;               // Флаг возможности открытия сделок
//--- input parameter
input double InpPips=20;
extern double Lot=0.01;
extern int TrailingStop = 30;    // размер трейлинг стопа
extern int TrailingStep = 10;   // шаг трейлинга
extern int Magic = 0;        // номер ордера
extern int Slippage = 5;       // проскальзывание
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
 // Проверка необходимых для работы условий
  if (IsTradeAllowed())
   Alert("Работа советника  по символу ",Symbol()," начата.");
  else
  {
  Alert("Торговля советниками не разрешена! Советник не будет работать. Проверьте настройки Вашего терминала.");
  }
  // Проверка пользовательских объемов
    double Mlot=MarketInfo(Symbol(),MODE_MINLOT);
    if(Lot<Mlot)
     {
      Alert("Недопустимо маленькое значение объема сделок. Объем установлен на допустимый минимум!");
      Print("Недопустимо маленькое значение объема сделок. Объем установлен на допустимый минимум!");
      Lot=Mlot;
     }
  // Инициализация первичных данных
   if (Point==0.0001) Corr=1;
     else Corr=10;
     if(Digits==2) TwoDigCorr=10;
    else TwoDigCorr=1;
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   static double prev_price=0;
   double price=0;
//---
   MqlTick last_tick;
//--- 
   if(SymbolInfoTick(Symbol(),last_tick))
     {
      prev_price=last_tick.bid;

      double temp=prev_price-price;
      double rezult=temp*MathPow(10,Digits());
      prev_price=price;
      Comment("    rezult = ",rezult,"    price = ",price,"    temp = ",temp,"    Pips = ",InpPips*Point);
      if(rezult>InpPips)
        {
         OrderSend(Symbol(),OP_BUY,Lot,Ask,5,Bid-100*Point,Bid+1500*Point,0,0,5,clrBlue);// открываем бай
         OrderSend(Symbol(),OP_SELL,Lot,Bid,5,Ask+100*Point,Ask-1500*Point,0,0,10,clrRed); // открываем селл
         
        }
        for (int i=1; i<=OrdersTotal(); i++)       //Цикл по всем ордерам,..
     {                                        //отражённым в терминале
      if(OrderSelect(i-1,SELECT_BY_POS)==true)//Если есть следующий
        {                                     
         OrderSelect(0,SELECT_BY_TICKET);
         OrderSelect(0,SELECT_BY_TICKET);
        
        }
     }                                        //Конец тела цикла
    
     }
    
   else Print("SymbolInfoTick() failed, error = ",GetLastError());
  }
  
  
  
  //+------------------------------------------------------------------+
  
  void Trailing()
  {
  for(int i=OrdersTotal() -1; i>0; i--)
  {
  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
  {
  if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
  {
  if(OrderType()== OP_BUY)
  {
  if(Bid - OrderOpenPrice() > TrailingStop*Point || OrderStopLoss() == 0 )
  {
  if (OrderStopLoss() < Bid-(TrailingStep+TrailingStep)*Point || OrderStopLoss() == 0)
  {
 if  (!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-TrailingStop*Point,Digits),0,0 ));
  Print("Ошибка модификации ордера на покупку!");
  }
  }
  }
 if (OrderType() == OP_SELL)
 {
 if (OrderOpenPrice()- Ask > TrailingStop*Point || OrderStopLoss() == 0 )
{
if (OrderStopLoss() > Ask +(TrailingStep+TrailingStep)*Point || OrderStopLoss() == 0)
{
if (!OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask + TrailingStop*Point, Digits),0,0));
Print("Ошибка модификации ордера на продажу!");
}
}
 }

  }
  }
  }
  }
  
Motivazione: