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

 
rosomah :

Lütfen Standart Kitaplığı kullanırken , Sor ve Teklif alırken mysymbol.RefreshRates();

onlar. güncelleme mi yoksa Kütüphaneden gelen verilerin güncellenmesi gerekmiyor mu?

veya

gerçek zamanlı fiyatlara ihtiyacınız varsa. yapacak bir şey yok

if((Bid-Xprice)/Puan>=Adım)

 

Bir şey anlamadım) 3 saattir kodu karıştırıyorum. bu, ızgaranın işlevidir. şebekede yeni bir emir açıldığında çağrılan amaç, TP'yi yeniden hesaplamak ve şebekedeki tüm siparişler için değiştirmektir.

Ancak yalnızca ızgaradaki en eski düzenin TR'sini değiştirir.

Neyi fazla düşündüm?)))

 void ModifyOrders()
  {
   double avg= 0 ;
   int count = 0 ;

   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 || OP_SELL)
              {
               avg+=OrderOpenPrice();
               count++;
              }
           }
        }
     }
   int Tcount=count- 1 ;         // Print("204");
   avg=(Tcount*Step* 0.4 );
//     avg=NormalizeDouble(avg/count,Digits);
   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)
              {
               double Bprice=FindLastBuyPrice(); //Print("215");
               TP= NormalizeDouble (Bprice+avg* Point , Digits ); //Print("216");
               bool res=OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 ,Blue); // Print("217");
               if (!res)
                   Print ( " Error modification. Error code = " , DoubleToString ( GetLastError (), 0 ));
              }

             if (OrderType()==OP_SELL)
              {
               double Sprice=FindLastSellPrice();
               TP= NormalizeDouble (Sprice-avg* Point , Digits );
               bool res=OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 ,Red);
               if (!res)
                   Print ( " Error modification. Error code = " , DoubleToString ( GetLastError (), 0 ));
              }
           }
        }
     }

  }
 
Leanid Aladzyeu :

Bir şey anlamadım) 3 saattir kodu karıştırıyorum. bu, ızgaranın işlevidir. şebekede yeni bir emir açıldığında çağrılan amaç, TP'yi yeniden hesaplamak ve şebekedeki tüm siparişler için değiştirmektir.

Ancak yalnızca ızgaradaki en eski düzenin TR'sini değiştirir.

Neyi fazla düşündüm?)))

Tarayıcınızı ne zaman değiştireceksiniz? Tıpkı küçük bir çocuk gibi.
 
Karputov Vladimir :
Tarayıcınızı ne zaman değiştireceksiniz? Tıpkı küçük bir çocuk gibi.

Bu sitenin sorunu, siteyi tarayıcıma uyarlamamış olmaları. Her zamanki gibi servis masası, 0 yardım. tarayıcım bana uyuyor.

 
Leanid Aladzyeu :

Bu sitenin sorunu, siteyi tarayıcıma uyarlamamış olmaları. Her zamanki gibi servis masası, 0 yardım. tarayıcım bana uyuyor.

Kodu eklemek için her zaman normal Internet Explorer'ı kullanabilirsiniz - bu sayede kod tam olarak eklenir. Başkalarını düşünün - kodu yapıştırdığınız metin olarak okumak uygun değildir.
 

Bana MT4 kodunu söyle. Yeni bir çubuk geldiyse, gösterge tablosunu yeniden çizin.

Kodu buldum gibi görünüyor, başlangıca ekliyorum

 if (IsNewBar())
   {
     Print ( "Новый бар" );
    RefreshRates();
    WindowRedraw();

   }

// функция за кодом

 bool IsNewBar()

{

   static datetime BARflag = 0;

   datetime now = Time[0];

   if(BARflag < now)

   {

      BARflag = now;         

      return(1);

   }

   

   else

   {

      return(0);

   }

}


Baskı çıkar ve grafik yeniden çizilmez =(

 
twiling1983 :

Bana MT4 kodunu söyle. Yeni bir çubuk geldiyse, gösterge tablosunu yeniden çizin.

Kodu buldum gibi görünüyor, başlangıca ekliyorum


Baskı çıkar ve grafik yeniden çizilmez =(

Muhtemelen RefreshRates ve WindowRedraw göstergeleri hiçbir şekilde etkilemediği için. Göstergeleri kazmanız gerekiyor.
 

Mevcut grafikte ne satın aldığımızı ve ne için aldığımızı nasıl belirleyeceğiz (Rusça çarpık, üzgünüm). Örneğin, EURUSD grafiğinde, temel para birimi (ne satın alıyoruz) EUR ve karşıt para birimi (ne için satın alıyoruz) USD'dir. Tanımlanabilirler:

 string first = SymbolInfoString ( Symbol (), SYMBOL_CURRENCY_BASE );
string second = SymbolInfoString ( Symbol (), SYMBOL_CURRENCY_PROFIT );

Peki ya örneğin altın? ALTIN grafiğinde her iki değer de USD olacaktır. Ve USD karşılığında altın aldığımızı belirlemem gerekiyor. Karakter adı dizesinin ayrıştırılması uygun değil.

 
Alexey Viktorov :
Muhtemelen RefreshRates ve WindowRedraw göstergeleri hiçbir şekilde etkilemediği için. Göstergeleri kazmanız gerekiyor.

Peki, terminaldeki yenile düğmesine basarsanız, her şey yeniden hesaplanır.

kodda aynı butona nasıl tıklanır? =)

bana öyle geliyor

ChartSetSymbolPeriod(0,NULL, PERIOD_CURRENT );

 

Diziler hakkında bilgi edinmeye başladı.

Dizili emirler için fonksiyon yazdım, 3 dizi = 0 alış, 1= sat, 2= toplam alış ve satış işlemleri .

Sonra satın alma koşulunda if ( ilk koşul && array [0] == 0 ) yazdım, sonra satın almayı aç

ve satılıksa (ilk koşul && dizisi [1]==0) satışa açılırsa.

Ama test cihazında hata veriyor ve test duruyor, sorun ne? ("dizi dışı" hatası)