Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 370

 
Ekburg, tamam
 
Ekburg :


En son sürümü terminale kurun, içine kod yazmak daha kolay, daha az hata olasılığı var, tavsiye ederim! :)

İlk gönderilen kısım düzeltildi, parantezlerin son kısmı olmadan, neden gerekli oldukları belli değil..


bu benim danışmandan çıkışım, tüm koşullar yerine getirilirse danışmandan çıkış gerçekleşir

onlar.

başarısız=doğru;

ve ötesinde

if(fail) return(0);

 
SpikeOne :


bu benim danışmandan çıkışım, tüm koşullar yerine getirilirse danışmandan çıkış gerçekleşir

onlar.

başarısız=doğru;

ve ötesinde

if(fail) return(0);


Bu anlaşılabilir, ancak en başta gönderilen kodda, çıkış işlevinden önce çok fazla parantez var))

Gönderdiklerim yardımcı oldu mu?

 
if ( AccountProfit()+ AccountBalance()>=740)
{
for(int zx=SiparişlerToplam(); zx+1>=0; zx--)
{
if(OrderSelect(zx,SELECT_BY_POS,MODE_TRADES)==true)
OrderDelete(OrderTicket());
}
while (OrdersTotal()>0)
{
if(Sipariş Seçimi(0,SELECT_BY_POS,MODE_TRADES))
{
if(OrderType()==OP_BUY) sonuç=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SEL) sonuç=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(sonuç!=DOĞRU)
{
er=GetLastError();
Print("LastError = ",er, " ",Symbol());
}
başka = 0;
}
}
başarısız=doğru;
}

if(fail) return(0);

Kodumu yerden önce Expert Advisor https://www.mql5.com/ru/code içine yapıştırırsanız

if(or_bu==risk &&_b==0) tick(0);

if(or_sl==risk &&_s==0) tick(1);

daha sonra danışman farklı şekilde işlem yapmaya başlar, kodumu sadece 740 yazarak girmesi gerekse de, test cihazında başlangıçta bakiyem 700'dür.

değerler bunun gibi testler için ayarlanabilir:

extern bool testi=yanlış; // testte nesneleri devre dışı bırak

harici int prof=2; // kar seviyesi

harici int chag=1.7; // siparişler arasında adım

harici int risk=0; //risk seviyesi

harici çift lot = 0.01; // ilk parti

dış çift k_lot=2; // sesi arttır

harici çift lot_max=100;

boolsonuç;

bool başarısız=yanlış;

Farklı işlem yapmasıyla ilgili sorun bu, 2013 sınavına girdiğim tarihi anlayamıyorum. 11. 08. ve 2013. 11.09.

 
SpikeOne :

daha sonra danışman farklı şekilde işlem yapmaya başlar, kodumu sadece 740 yazarak girmesi gerekse de, test cihazında başlangıçta bakiyem 700'dür.


 if ( AccountProfit ()+ AccountBalance ()>= 740 )
   {
   for ( int zx= OrdersTotal (); zx+ 1 >= 0 ; zx--)
      {
       if ( OrderSelect (zx, SELECT_BY_POS , MODE_TRADES )== true )
       OrderDelete ( OrderTicket ());
      }
   while ( OrdersTotal ()> 0 )
      {
       if ( OrderSelect ( 0 , SELECT_BY_POS , MODE_TRADES ))
         {
         if ( OrderType ()== OP_BUY ) result= OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( MarketInfo ( OrderSymbol (), MODE_BID ), MarketInfo ( OrderSymbol (), MODE_DIGITS )), 3 ,CLR_NONE);
         if ( OrderType ()== OP_SELL ) result= OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( MarketInfo ( OrderSymbol (), MODE_ASK ), MarketInfo ( OrderSymbol (), MODE_DIGITS )), 3 ,CLR_NONE);
         if ( OrderType ()== OP_BUYLIMIT || OrderType ()== OP_BUYSTOP || OrderType ()== OP_SELLLIMIT || OrderType ()== OP_SELLSTOP )
         OrderDelete ( OrderTicket ());
         if (result!= TRUE )
            {
            er=GetLastError();
             Print ( "LastError = " ,er, " " , Symbol ());
            }
         else er= 0 ;
         }
       else Print ( "Error when order select " , GetLastError());
      }
   if ( OrdersTotal ()== 0 ) fail= true ;
   }
if (fail= true ) return ( 0 );

Kodumu derlemeye çalış, sonucu bildir, sonra düşüneceğiz...

bu kodu gereğinden önce girerse sorun ilk operatördedir bakalım orda ne var

 
Ekburg :

Kodumu derlemeye çalış, sonucu bildir, sonra düşüneceğiz...

bu kodu gereğinden önce girerse sorun ilk operatördedir bakalım orda ne var


Evet derledim ama sorun devam etti...
 
SpikeOne :

Evet derledim ama sorun devam etti...

Hesap Karı Cari hesap için temel para birimi cinsinden kâr değerini döndürür.

Sorun bu, sanırım karı dolar olarak bilmek istiyorsunuz ve o da örneğin euro olarak veriyor.

Kodun ilk ifadesinin tüm hesaplamasını bununla değiştirmeyi deneyin:

Hesap Sermayesi Cari hesap için özkaynak tutarını döndürür. Öz sermaye hesaplaması, ticaret sunucusunun ayarlarına bağlıdır.

ve son olarak bu ifadeyi derleyin:

 if ( AccountEquity ()>= 740 )
   {
   ...
   }
 
Ekburg :

Hesap Karı Cari hesap için temel para birimi cinsinden kâr değerini döndürür.

Sorun bu, sanırım karı dolar olarak bilmek istiyorsunuz ve o da örneğin euro olarak veriyor.

Kodun ilk ifadesinin tüm hesaplamasını bununla değiştirmeyi deneyin:

Hesap Sermayesi Cari hesap için özkaynak tutarını döndürür. Öz sermaye hesaplaması, ticaret sunucusu ayarlarına bağlıdır.

ve son olarak bu ifadeyi derleyin:


Sorun görünüşte farklıdır, düzgün çalışmayan bir danışmana, düzgün çalışan bir kod eklersem, derlemeden sonra danışman düzgün çalışmıyor, sayfayı tarayıcıda açtığınızda gibi hissediyor ve size verecek her seferinde bir önbellek.

Yeni bir Expert Advisor oluşturup çalışma kodunu buraya ekleseniz bile, nedense bozuk çalışıyor.

 
SpikeOne :


..doğru çalışmayan bir EA'ya, düzgün çalışan bir kod eklersem, derlemelerden sonra EA düzgün çalışmaz...


o zaman ben asistan değilim) tüm danışmanı sıralamanız gerekir.
 
Ekburg :

o zaman ben asistan değilim) tüm danışmanı sıralamanız gerekir.


İlk verilerde, siparişler arasındaki adımın int değeriyle gösterildiği ve 1.7'yi belirlediğim bir jamb =) bulmuş gibiyim, ikiye katlandı, iyi çalıştı =)