Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 641

 
Hallo zusammen! Kann ich um Hilfe bitten? Ich habe die Werte der globalen Variablen aus irgendeinem Grund zurückgesetzt. Ich habe einen einfachen Code geschrieben, der alles anzeigt.
#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"));
     
     
  }

Das Ergebnis ist:

vor 0,0

nach 1.0

vor 0,0

nach 1.0

auf 0,0

Sie wird bei jedem Tick zu 0, obwohl sie nur beim Aufruf von OnInit, der bekanntlich einmal beim Start des EAs aufgerufen wird, auf 0 gesetzt wird.

Was ist das Problem, sagen Sie es mir!

 
paylesss:
Hallo zusammen! Kann ich hier Hilfe bekommen? Aus irgendeinem Grund werden bei mir die Werte der globalen Variablen zurückgesetzt. Ich habe einen einfachen Code geschrieben, der alles anzeigt.

Das Ergebnis ist:

vor 0,0

nach 1.0

vor 0,0

nach 1.0

auf 0,0

Sie wird bei jedem Tick zu 0, obwohl sie nur beim Aufruf von OnInit auf 0 gesetzt wird, das, wie Sie wissen, einmal zu Beginn des EA aufgerufen wird.

Was ist das Problem, sagen Sie es mir!

Ich habe es mit dem neuesten Build überprüft:

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

Expert Advisor Code:

//+------------------------------------------------------------------+
//|                                                 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"));
  }
//+------------------------------------------------------------------+

Ergebnis:

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

Es wurden keine Fehler festgestellt, der Code funktioniert korrekt.

Dateien:
Tests.mq5  3 kb
 

Danke! Der Neustart des Computers hat geholfen! Schade, ich sitze schon den ganzen Morgen hier))

 
Hallo, können Sie mir sagen, ob es möglich ist, eine Formel in den Code für einen Prüfer zu implementieren?
Wenn(das mql5 Cloud-Netzwerk ausgeschaltet ist und der Test mehr als 2-5 Stunden dauert (zum Beispiel)), schalten Sie das mql5 Cloud-Netzwerk ein.
 
newnek:
Hallo, können Sie mir sagen, ob es möglich ist, eine Formel in den Code für einen Prüfer zu implementieren?
Wenn(mql5 cloud network deaktiviert ist und der Test mehr als 2-5 Stunden dauert (zum Beispiel)), aktivieren Sie mql5 cloud network
Ich glaube, MQL5 hat noch keine Kontrollfunktionen zum Aktivieren/Deaktivieren des MQL5 Cloud Network. Wenn Sie den Test sofort von der Befehlszeile aus starten, können Sie eine Verbindung zum Netzwerk herstellen.
 
Karputov Vladimir:
Es scheint, dass MQL5 noch keine Funktionen hat, um das Verbinden/Trennen des MQL5 Cloud Network zu steuern. Wenn Sie den Test sofort von der Befehlszeile aus starten, können Sie eine Verbindung zum Netzwerk herstellen.
Ja, das habe ich gesehen, ich möchte nur die Cloud nach einiger Zeit einschalten, ohne Geld für Zahlungen auszugeben, sondern wenn ich sicher bin, dass alles in meinem Expert Advisor getan wurde und ich nicht aufgehört habe, ihn zu testen
 
newnek:
Ja, ich habe gesehen, dass, ich will nur auf die Wolke nach einiger Zeit zu drehen, nicht um Geld zu zahlen, aber wenn ich sicher bin, dass ich alle Vorkehrungen in der Expert Advisor gemacht haben und nicht gestoppt haben sie von der Prüfung
Dann ist WinAPI die einzige Möglichkeit zu helfen.
 
Vladislav Andruschenko:
Ich danke Ihnen.
 
Karputov Vladimir:
Dann hilft nur WinAPI.
So weit bin ich noch nicht gekommen
 

eine Eule geschrieben, aber aus irgendeinem Grund funktioniert der Trailing-Stop nicht... Was könnte der Grund dafür sein?

//+------------------------------------------------------------------+
//|                                                         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("Ошибка модификации ордера на продажу!");
}
}
 }

  }
  }
  }
  }