Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 641

 
Herkese selam! yardım istiyorum. Nedense global değişkenlerin değerleri benim için sıfırlanıyor. Her şeyi gösteren basit bir kod yazdım.
 #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" ));
     
     
  }

Sonuç:

0.0'a kadar

1.0'dan sonra

0.0'a kadar

1.0'dan sonra

0.0'a kadar

yani her tik ile değişken 0 olur. Her ne kadar sadece OnInit çağrıldığında 0 değerini alsa da, bu bildiğiniz gibi Expert Advisor'ın başlangıcında 1 kez çağrılır.

Sorun nedir, söyle bana!

 
paylesss :
Herkese selam! yardım istiyorum. Nedense global değişkenlerin değerleri benim için sıfırlanıyor. Her şeyi gösteren basit bir kod yazdım.

Sonuç:

0.0'a kadar

1.0'dan sonra

0.0'a kadar

1.0'dan sonra

0.0'a kadar

yani her tik ile değişken 0 olur. Her ne kadar sadece OnInit çağrıldığında 0 değerini alsa da, bu bildiğiniz gibi Expert Advisor'ın başlangıcında 1 kez çağrılır.

Sorun nedir, söyle bana!

En son derlemede kontrol edildi:

 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

Uzman kodu:

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

Sonuç:

 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

Hata bulunamadı, kod düzgün çalışıyor.

Dosyalar:
Tests.mq5  3 kb
 

Teşekkürler! Bilgisayarı yeniden başlatmak yardımcı oldu! Yazık, bütün sabah oturdum))

 
Merhaba, söyle bana, test cihazı için kodda bir formül uygulamak mümkün mü?
( mql5 bulut ağı devre dışıysa ve test 2-5 saatten fazla sürüyorsa (örneğin)), o zaman mql5 bulut ağını etkinleştirin
 
newnek :
Merhaba, söyle bana, test cihazı için kodda bir formül uygulamak mümkün mü?
( mql5 bulut ağı devre dışıysa ve test 2-5 saatten fazla sürüyorsa (örneğin)), o zaman mql5 bulut ağını etkinleştirin
MQL5'in henüz MQL5 Cloud Network bağlantısını/bağlantısını kesmeyi yönetme işlevleri yok gibi görünüyor. Şimdi, komut satırından hemen test etmeye başlarsanız, ağa bağlanabilirsiniz.
 
Karputov Vladimir :
MQL5'in henüz MQL5 Cloud Network bağlantısını/bağlantısını kesmeyi yönetme işlevleri yok gibi görünüyor. Şimdi, komut satırından hemen test etmeye başlarsanız, ağa bağlanabilirsiniz.
evet gördüm, sadece bir süre sonra, ödemeye para harcamadan bulutu açmak istiyorum ve danışmandaki her şeyi önceden gördüğümden ve test etmeyi bırakmadığımdan emin olduğumda
 
newnek :
evet gördüm, sadece bir süre sonra, ödemeye para harcamadan bulutu açmak istiyorum ve danışmandaki her şeyi önceden gördüğümden ve test etmeyi bırakmadığımdan emin olduğumda
O zaman sadece WinAPI yardımcı olacaktır.
 
Vladislav Andruschenko :
Teşekkür ederim.
 
Karputov Vladimir :
O zaman sadece WinAPI yardımcı olacaktır.
O kadar derin ki henüz tırmanmadım
 

bir baykuş yazdı, ama nedense sondaki durdurma çalışmıyor ... nedeni ne olabilir?

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

  }
  }
  }
  }