MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 1199

 

Program.mqh'den nasıl veri talep edeceğimi söyler misiniz?

böyle bir kod var

 //--- Определение точек
double stS= 0 ,opS= 0 ,stB= 0 ,opB= 0 ;
   if ( ObjectsTotal ( 0 , 0 , OBJ_TREND )> 0 )
      {
      stS= NormalizeDouble (ObjectGet( "OrderS" ,OBJPROP_PRICE1)+ 5 * Point , Digits - 1 );
      opS= NormalizeDouble (ObjectGet( "OrderS" ,OBJPROP_PRICE2)- 5 * Point , Digits - 1 );
      stB= NormalizeDouble (ObjectGet( "OrderB" ,OBJPROP_PRICE1)- 5 * Point , Digits - 1 );
      opB= NormalizeDouble (ObjectGet( "OrderB" ,OBJPROP_PRICE2)+ 5 * Point , Digits - 1 );
      }
EA'da nokta verileri nasıl talep edilir?
 
MakarFX :

Program.mqh'den nasıl veri talep edeceğimi söyler misiniz?

böyle bir kod var

EA'da nokta verileri nasıl talep edilir?

Herhangi bir grafikten bir nesne elde etmek için ihtiyacınız olan tek şey, nesnenin adı ve grafik kimliğidir:

 #property script_show_inputs

//--- input parameters
input long      chartID = 0 ;
input string    name = "OrderS" ;
input int       subwin = 0 ;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart () {
//---
   double stS = 0 , opS = 0 , stB = 0 , opB = 0 ;
   if ( ObjectsTotal (chartID, subwin, OBJ_TREND ) > 0 ) {
    stS = NormalizeDouble ( ObjectGetDouble (chartID, name, OBJPROP_PRICE1) * Point , Digits );
    opS = NormalizeDouble ( ObjectGetDouble (chartID, name, OBJPROP_PRICE2) * Point , Digits );
    stB = NormalizeDouble ( ObjectGetDouble (chartID, name, OBJPROP_PRICE1) * Point , Digits );
    opB = NormalizeDouble ( ObjectGetDouble (chartID, name, OBJPROP_PRICE2) * Point , Digits );
     Print ( "stS: " , stS, "; opS: " , opS, "; stB: " , stB, "; opB: " , opB, "." );
  }
}

Böylece herhangi bir nesnenin verilerini herhangi bir MQL4 programından alabilirsiniz.

Документация по MQL5: Операции с графиками / ChartID
Документация по MQL5: Операции с графиками / ChartID
  • www.mql5.com
Операции с графиками / ChartID - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mihail Matkovskij :

Herhangi bir grafikten bir nesne elde etmek için ihtiyacınız olan tek şey, nesnenin adı ve grafik kimliğidir:

Böylece herhangi bir nesnenin verilerini herhangi bir MQL4 programından alabilirsiniz.

Sen beni anlamadın...

yukarıdaki kod Program.mqh =>OnTimerEvent dosyasındadır.

ve puanların değeri periyodik olarak güncellenir ve danışmanın bu değerleri alması gerekir.

Dolayısıyla soru şu: Program.mqh'den nasıl veri talep edilir?

 void CProgram::OnTimerEvent( void )
  {
   CWndEvents::OnTimerEvent();
//--- Индикатор выполнения
   static int count1= 0 ;
//--- Пауза между обновлением элементов
   static int count2= 0 ;
   if (count2< 200 )
     {
      count2+=TIMER_STEP_MSC;
       return ;
     }
//--- Обнулить счётчик
   count2= 0 ;
//--- Определение точек
double stS= 0 ,opS= 0 ,stB= 0 ,opB= 0 ;
   if ( ObjectsTotal ( 0 , 0 , OBJ_TREND )> 0 )
      {
      stS= NormalizeDouble (ObjectGet( "OrderS" ,OBJPROP_PRICE1)+ 5 * Point , Digits - 1 );
      opS= NormalizeDouble (ObjectGet( "OrderS" ,OBJPROP_PRICE2)- 5 * Point , Digits - 1 );
      stB= NormalizeDouble (ObjectGet( "OrderB" ,OBJPROP_PRICE1)- 5 * Point , Digits - 1 );
      opB= NormalizeDouble (ObjectGet( "OrderB" ,OBJPROP_PRICE2)+ 5 * Point , Digits - 1 );
      }
  }
 
MakarFX :

Sen beni anlamadın...

yukarıdaki kod Program.mqh =>OnTimerEvent dosyasındadır.

ve puanların değeri periyodik olarak güncellenir ve danışmanın bu değerleri alması gerekir.

Dolayısıyla soru şu: Program.mqh'den nasıl veri talep edilir?

Hiç kimse değişkenleri bildirmekle uğraşmaz,

 double stS = 0 , opS = 0 , stB = 0 , opB = 0 ;

CProgram sınıfının genel kapsamında ve herhangi bir sorun olmadan uzmandan erişin.

MakarFX :

Sen beni anlamadın...

Tabii ki, sorunun açıklaması daha eksiksiz olması gerektiğinden hemen anlamadım. İdeal olarak, kaynakların eklenmesi arzu edilir.

 
Mihail Matkovskij :

Program.mqh dosyası Expert Advisor'a bağlı mı?...

Evet ise, kimse değişkenleri bildirmekle uğraşmaz,

CProgram sınıfının küresel kapsamında ve bunlara uzmandan kolayca erişin.

dosya Program.mqh içerir...

şimdi gobalno değişkenlerini bildirmeye çalışacağım

 
MakarFX :

dosya Program.mqh içerir...

şimdi gobalno değişkenlerini bildirmeye çalışacağım

Düzenlendi: h ttps://www.mql5.com/ru/forum/160683/page1199#comment_17172497 , çünkü başta kafamı karıştırdın...

 
Mihail Matkovskij :

Hiç kimse değişkenleri bildirmekle uğraşmaz,

CProgram sınıfının genel kapsamında ve herhangi bir sorun olmadan uzmandan bunlara erişin.

çalışmıyor

 //+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ( void )
  {
   if (program.stS< 0 ):: Print ( "ERROR" );
  }


 
MakarFX :

çalışmıyor


CProgram sınıfının kaynağına veya koduna ihtiyacınız var. Aksi halde çalışmaz...

Bunu şöyle yapmak istedim:

 class CProgram : ... {
...
public:
   double stS, opS, stB, opB;
...
Üç nokta, bu senin sınıfın hakkında bilmediğim bir şey :)
 
Mihail Matkovskij :

CProgram sınıfının kaynağına veya koduna ihtiyacınız var. Aksi halde çalışmaz...

Bunu şöyle yapmak istedim:

Üç nokta, bu senin sınıfın hakkında bilmediğim bir şey :)

Teşekkürler!!! Her şey yolunda gitti.

bilmeden koydum

 public:
   double stS=0, opS=0, stB=0, opB=0;

Sıfırları kaldırdım ve her şey yoluna girdi.

Çok teşekkürler.

 
MakarFX :

Teşekkürler!!! Her şey yolunda gitti.

bilmeden koydum

Sıfırları kaldırdım ve her şey yoluna girdi.

Çok teşekkürler.

Bir tane daha. Başlatma işlemini yapmanız önerilir:

CProgram::CProgram():
  stS( 0 ), opS( 0 ), stB( 0 ), opB( 0 )
{
  ...
}

Aksi takdirde, okuma OnTick()'te gerçekleştirilirse, zamanlayıcının işaretinden önce, EA değişkenlerde rastgele veriler alabilir .