Yeni başlayanlardan sorular MQL4 MT4 MetaTrader 4 - sayfa 234

 
leonerd :

tamam anladım teşekkürler Uzman üzerinde pratik yapmaya karar verdim. Ama sonra 5203 çıktı. MT5'te aynı kod iyi çalışıyor ..

bunu çözmüş gibi görünüyor. Zaman aşımı 5000'di (MT5'te çalıştı ancak MT4'te çalışmadı). 500'e bahse girerim - MT4'te de çalıştı.

 

Doğrudan hesaplama yapmak için bir fonksiyonun bir göstergeden bir Uzman Danışmana transferini nasıl organize edeceğimi söyler misiniz?


void OnTick()

{

SovExitBuffer[0]= getValue()// }

)?


 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {

//---
   int limit;
//---
   if (rates_total<= 1 )
       return ( 0 );
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if (prev_calculated> 0 )
      limit=limit+ 1 ;

 for ( int i=limit- 1 ; i>= 0 ; i--)
 {

  
  upDband1= iMA ( NULL , 0 , 25 , 0 , MODE_SMA , PRICE_CLOSE ,i)+ iStdDev ( NULL , 0 , 25 , 0 , MODE_EMA , PRICE_CLOSE ,i)* 2 ;
  maDbands1= iMA ( NULL , 0 , 25 , 0 , MODE_SMA , PRICE_CLOSE ,i);
  deltaDbands1=upDband1-maDbands1;

  ExitBuffer[i]=deltaDbands1; //Это значение нужно получить в советнике в Ontick()
  
  }

   return (rates_total);
  }


 

İstemi böyle bir kod yazdı 2 hata parlıyor! 1-beklenmeyen bitiş programı 2- Dengesiz parantezler Dengesiz parantezlerin nesi var?

 extern double         Lot   = 1 ;
//-------------------------------------
//----------------------------------
void start()
{
  Lot=OrderLots();
   void RefreshRates();
  CurAskPriceOne = MarketInfo( "EURUSD" , MODE_ASK);
  CurAskPriceTwo = MarketInfo( "USDCHF" , MODE_ASK);
 //----------
 //--Открытие ордера1
    Ticket= OrderSend ( "EURUSD" ,OP_BUY,Lot,CurAskPriceOne, 2 , 0 , 0 );
     if (Ticket > 0 )
      {
       if ( OrderSelect (Ticket,SELECT_BY_POS,MODE_TRADES)) Print ( " One order opene : " , OrderOpenPrice());
      {
       else Print ( "Eror opening BUY EURUSD order : " , GetLastError ();
//-------------
//--Ордер 2
          Ticket= OrderSend ( "USDCHF" ,OP_BUY,Lot,CurAskPriceTwo, 2 , 0 , 0 );
     if (Ticket > 0 )
      {
       if ( OrderSelect (Ticket,SELECT_BY_POS,MODE_TRADES)) Print ( " One order opene : " , OrderOpenPrice());
      {
       else Print ( "Eror opening BUY USDCHF order : " , GetLastError ());
      
//---------------------------Закрытие старт
   return ;
}
 
Tenimagalon :

İstemi böyle bir kod yazdı 2 hata parlıyor! 1-beklenmeyen bitiş programı 2- Dengesiz parantezler Dengesiz parantezlerin nesi var?

Köşeli ayraçlarla düzeltilen hatalar - eşleştirilmiş olanları veya daha iyisini aramanız gerekir - önce köşeli ayraçları koyun ve ardından kodu içine yazın:

 extern double         Lot   = 1 ;
//-------------------------------------
//----------------------------------
void start()
{
   Lot=OrderLots();
   RefreshRates();
   CurAskPriceOne = MarketInfo( "EURUSD" , MODE_ASK);
   CurAskPriceTwo = MarketInfo( "USDCHF" , MODE_ASK);
   //----------
   //--Открытие ордера1
   Ticket= OrderSend ( "EURUSD" ,OP_BUY,Lot,CurAskPriceOne, 2 , 0 , 0 );
   if (Ticket > 0 )
     {
       if ( OrderSelect (Ticket,SELECT_BY_POS,MODE_TRADES)) 
         Print ( " One order opene : " , OrderOpenPrice());
       else
         Print ( "Eror opening BUY EURUSD order : " , GetLastError ());
     }
   //-------------
   //--Ордер 2
   Ticket= OrderSend ( "USDCHF" ,OP_BUY,Lot,CurAskPriceTwo, 2 , 0 , 0 );
   if (Ticket > 0 )
     {
       if ( OrderSelect (Ticket,SELECT_BY_POS,MODE_TRADES)) 
         Print ( " One order opene : " , OrderOpenPrice());
     }
   else
       Print ( "Eror opening BUY USDCHF order : " , GetLastError ());
   //---------------------------Закрытие старт
   return ;
}

...ama kodunuzda mantık yok...

 

ekleyeceğim

Bu:

Lot=OrderLots();

çalışmayacak, OrderLots() işlevinin çalışması, yardımı okuyun.

değişkenler:

CurAskPriceOne ve CurAskPriceTwo

hiçbir yerde duyurulmadı

yaklaşık olarak bu şekilde olmalıdır.

   double CurAskPriceOne = MarketInfo( "EURUSD" , MODE_ASK);
   double CurAskPriceTwo = MarketInfo( "USDCHF" , MODE_ASK);

bunun gibi bir şey

 
Şey, çoğuna katılıyorum.
  double CurAskPriceTwo = MarketInfo( "USDCHF" , MODE_ASK);

duyurmadı ve çalıştı. :)

 
Dakika alıntılarının geriye dönük olarak kaybolduğunu birkaç kez gözlemledim. Örneğin, dün gece (12.02) 10-11 için birkaç yüz kayıt kayboldu. Bazen bu, M1 grafiğindeki "yenile" düğmesine tıklayarak düzeltilebilir, dün işe yaramadı ve başka bir terminalden manuel olarak alıntıları almak zorunda kaldım. Aynı zamanda, sunucudaki komisyoncu ile her şey yolunda, çünkü terminalin başka bir kopyasında açılan aynı hesap, deliksiz normal bir grafik verir. Ne yanlış olabilir?
Объем импорта - экономические данные США
Объем импорта - экономические данные США
  • www.mql5.com
Импорт (Imports) отражает объем товаров и услуг из-за рубежа, которые сразу же входят в сети потребления, склады и зоны внешней торговли. При составлении индикатора обычно используется стоимость
 
Beyler bunu çözmeme yardım edin.Siparişlerin nasıl açılacağı anlaşıldı.Türlere göre nasıl kapatılacağı. botlar.En basit kodu alalım.Bu piç kurunun bir kere sipariş açması için başına veya sonuna ne girilmesi gerekiyor.
 extern double lot = 1 ;
int start()
{
   int Ticket;
   Ticket= OrderSend ( "USDCHF" ,OP_BUY,Lot,Ask, 2 , 0 , 0 );
 return ( 1 );
}
 
Tenimagalon :
Beyler bunu çözmeme yardım edin.Siparişlerin nasıl açılacağı anlaşıldı.Türlere göre nasıl alınacağını nasıl kapatabilirim. botlar.En basit kodu alalım.Bu piç kurunun bir kere sipariş açması için başına veya sonuna ne girilmesi gerekiyor.
 OrdersTotal () < 1
 
Iurii Tokman :
Bunu açmadan önce yazmalı mıyım?
(
)