初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 641

 
みなさん、こんにちは。お願いがあるのですが?何らかの理由でグローバル 変数の値をリセットしてしまった。すべてを表示する簡単なコードを書きました。
#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"));
     
     
  }

その結果、こうなりました。

0.0以前

1.0以降

0.0以前

1.0以降

から0.0

0になるのはOnInitを呼び出すときだけですが、これはご存知のようにEAの開始時に一度だけ呼び出されます。

何が問題なんだ、教えてくれ!

 
paylesss:
皆さん、こんにちは。ここで助けを求めてもいいのでしょうか?グローバル変数の 値がなぜかリセットされるんだけど。すべてを表示する簡単なコードを書きました。

その結果、こうなりました。

0.0以前

1.0以降

0.0以前

1.0以降

から0.0

ただし、0をセットするのはOnInitを呼ぶときだけで、ご存知の通りEA開始時に一度だけ呼ばれます。

何が問題なんだ、教えてくれ!

最新ビルドで確認しました。

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 コード。

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

結果

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

エラーは検出されず、コードは正常に動作しています。

ファイル:
Tests.mq5  3 kb
 

ありがとうございます!パソコンの再起動で解決しました。 残念!朝からずっと座ってたんです))

 
こんにちは、テスター用のコードに数式を実装することが可能かどうか教えてください。
mql5クラウドネットワークが オフで、テストに2~5時間以上かかる場合(例)、mql5クラウドネットワークをオンにする
 
newnek:
こんにちは、テスター用のコードに数式を実装することが可能かどうか教えてください。
(mql5クラウドネットワークが 無効で、テストに2~5時間以上かかる場合(例))は、mql5クラウドネットワークを有効にしてください。
MQL5には、MQL5 Cloud Networkを有効/無効にする制御機能はまだないようです。すぐにコマンドラインからテストを開始すると、ネットワークに接続することができます。
 
Karputov Vladimir:
MQL5 Cloud Networkへの接続/切断を制御する機能はまだないようです。コマンドラインからすぐにテストを開始すると、ネットワークに接続することができます。
はい、私はそれを見てきました、私はちょうどいくつかの時間後にクラウドをオンにしたい、支払いにお金を費やすのではなく、私はすべてが私のExpert Advisorで行われ、私はそれをテストすることを停止していないことを確認したとき。
 
newnek:
はい、私はそれを見てきました、私はちょうど私がExpert Advisorですべての手配をし、テストからそれを停止していないことを確認したときに、支払うお金を費やすのではなく、いくつかの時間後にクラウドをオンにしたいのですが
それならWinAPIしかないでしょう。
 
Vladislav Andruschenko:
ありがとうございます。
 
Karputov Vladimir:
それならWinAPIしかないでしょう。
まだ、ここまで来ていない
 

はフクロウを書いたのですが、なぜかトレーリングストップが効きません...。その理由は何でしょうか?

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

  }
  }
  }
  }
  
理由: