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

 
TarasBY :

2) Bir çubuk sırasıyla aynı anda UPPER ve LOWER fraktallara sahip olamaz, kontrol edin

programcı aptallığı kategorisine aittir.

Peki, o zaman bu tür alıntılar sadece aptallar içindir.


 
TarasBY :

2) Bir çubuk sırasıyla aynı anda UPPER ve LOWER fraktallara sahip olamaz, kontrol edin

programcı aptallığı kategorisine aittir.


Her iki fraktal da bir çubukta olabilir
 
Vinin :
Her iki fraktal da bir çubukta olabilir
dakikaları kastetmişti ama ayları unutmuştu
 
Merhaba

kodda bir satır var

 if (G_time_344 == Time[ 0 ]) return ( 0 );
Anladığım kadarıyla, danışmanın yeni bir çubuk görünene kadar yeniden hesaplamayı geciktirmesinden sorumlu olan kişidir. Sıfır çubuğunun açılma zamanı değişene kadar yeniden hesaplama durur.

Buna göre, danışman tutanağı açarsam, her yeni dakikayla yeniden hesaplar. Ve H4'te açarsanız, yeniden hesaplama her 4 saatte bir olacaktır.

Danışmanın açılış süresini mevcut çubuğun, yani terminalin açık olduğu çubuğun değil, ayarlarda belirttiğim çubuğun açılış saatini alması için bu satırı yazmak nasıl doğru olur? Yani, danışmanı H4'e asıyorum ve her 5 dakikada bir yeniden hesaplayacak çünkü ona sordum. Ya da her dakika.


 
_new-rena :
dakikaları kastetmişti ama ayları unutmuştu

Dakikalar aylardan nasıl farklıdır?


 
evillive :
Değiştirirken günlükteki bir şeyden şikayet ediyor musunuz? "Aptalca yeni mevduat açar" çünkü herhangi bir kısıtlama yoktur, ancak OrderSend vardır.
hata yok, sadece sarı üçgenler
 
AlexeyVik :

Dakikalar aylardan nasıl farklıdır?

Katılıyorum ve M1'de keyifli anlar var. ama her barda aylarca öyle.
 
Soruyu kaldırdım kendim çözdüm
 
TarasBY :

1) Herhangi bir strateji, aynı anda açık olan siparişlerin sayısına göre belirlenmelidir. Buna göre, bir sonraki siparişi açmadan önce, kaç tanesinin zaten açık olduğunu kontrol etmeniz gerekiyor.

2) Bir çubuk sırasıyla aynı anda UPPER ve LOWER fraktallara sahip olamaz, kontrol edin

programcı aptallığı kategorisine aittir.

3) Tampon göstergelerinin değerlerinin döndürülmesi için koşullar yazmadan önce, bunun için hangi değerin "boş" olduğunu tam olarak bilmeniz gerekiyor mu? 0'ı kontrol ettin mi?

4) Tasarım

işe yarayacak olsa da (çoğu durumda), olduğu gibi, onu adlandırmak daha kolaydır - geliştiricinin "özgür bir buluşu" olduğu ve tüccarın çalışması için bilgilendirici olmadığı için doğal değildir. Alternatif, yeni bir çubuğu izlemektir.

5) Temel bilgilerle başlamalıyız, çünkü:

ne yazdığını hiç anlamadığını söylüyor.

Anlamanın en iyi yolu, başkalarının kodlarını incelemek ve bunları kendi amaçlarınız için değiştirmektir. İyi şanlar.

onları aynen yazıldığı gibi, nokta nokta ifşa ediyor.Onları değiştirmiyor, ki hakkında tek kelime etmemişsiniz.İşte tam kod:
 //+------------------------------------------------------------------+
//|                                                   Strategy 3.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright ""
#property link        ""
#include <Library1.mqh>
extern int Magic= 111 ;
extern int TP= 20 ;
extern int SL= 30 ;
extern int Trall_dist= 10 ;
extern int Shag= 10 ;
extern bool Isp_shag= false ;
extern bool Isp_bezubitok= false ;
extern double Lot= 0.1 ;
double SS= 0 ,BS= 0 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   double tp,sl;
   if ( Digits == 3 || Digits == 5 ) {tp=TP* 10 * Point ;sl=SL* 10 * Point ;} // условие для пятизнака
   else if ( Digits == 2 || Digits == 4 ) {tp=TP* Point ;sl=SL* Point ;} // условие для четырехзнака
   double Up= iFractals ( Symbol (), 0 ,MODE_UPPER, 3 );       //верхний фрактал,формируется на третьей свече
   double Down= iFractals ( Symbol (), 0 ,MODE_LOWER, 3 );     //нижний фрактал,формируется на третьей свече                                                   
//----
   if (Up> 0 &&Down== 0 &&Volume[ 0 ]< 2 )     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
     if ((High[ 3 ]+ 5 * Point -Ask)/ Point >MarketInfo( Symbol (),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
     OrderSend ( Symbol (),OP_BUYSTOP,Lot,High[ 3 ]+ 5 * Point , 20 ,High[ 3 ]-sl,High[ 3 ]+tp, NULL ,Magic, 0 ,Green);//выставляем отложенный на покупку
     else {BS=High[ 3 ]+ 5 * Point ; Print ( "Виртуальный BS:" ,BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
        {
         for ( int pos= 0 ;pos== OrdersTotal ();pos++)
         OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
         if (OrderMagicNumber()==Magic&&OrderSymbol()== Symbol ()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+ 5 * Point ,High[ 3 ]-sl,High[ 3 ]+tp, 0 ,CLR_NONE);
          }
        }
     
       }   
   else if (Up== 0 &&Down> 0 &&Volume[ 0 ]< 2 )
    {
     if ((Bid-Low[ 3 ]- 5 * Point )/ Point >MarketInfo( Symbol (),MODE_STOPLEVEL))
     OrderSend ( Symbol (),OP_SELLSTOP,Lot,Low[ 3 ]- 5 * Point , 20 ,Low[ 3 ]+sl,Low[ 3 ]-tp, NULL ,Magic, 0 ,Red);
     else {SS=Low[ 3 ]- 5 * Point ; Print ( "Виртуальный SS:" ,SS);}
         {
         for (pos= 1 ;pos== OrdersTotal ();pos++)
             {
             OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
             if (OrderMagicNumber()==Magic&&OrderSymbol()== Symbol ()&&OrderType()==OP_SELLSTOP)
               {
               OrderModify(OrderTicket(),Down- 5 * Point ,Low[ 3 ]+sl,Low[ 3 ]-tp, 0 ,CLR_NONE);
               } 
             }
         }
    
            
     if ( OrdersTotal ()> 0 )
    Trailing_stop(Magic, Symbol (),Trall_dist,Shag,Isp_shag,Isp_bezubitok);
     return ( 0 );
  }}
//+------------------------------------------------------------------+
Okuduğum, baktığım, anladıkça yazmaya çalışıyorum.Eleştiriniz MQL4 üzerine bir ders kitabına benziyor - ancak biri çiğnediğinde anlaşılabilir. Rusça satın alma kodumda olduğu gibi :)
 
if (Up> 0 &&Down== 0 &&Volume[ 0 ]< 2 )     //если верхний фрактал есть а нижнего нету и прошло не больше 2х тиков то:
    {
     if ((High[ 3 ]+ 5 * Point -Ask)/ Point >MarketInfo( Symbol (),MODE_STOPLEVEL)) //если расстояние 0 бара от хая фрактала позволяет то:
     OrderSend ( Symbol (),OP_BUYSTOP,Lot,High[ 3 ]+ 5 * Point , 20 ,High[ 3 ]-sl,High[ 3 ]+tp, NULL ,Magic, 0 ,Green); //выставляем отложенный на покупку
     else {BS=High[ 3 ]+ 5 * Point ; Print ( "Виртуальный BS:" ,BS);} // а ели нет то запоминаем(позже будет добавлен вход с рынка)
         { // К чему относится эта скобка???
         for ( int pos= 0 ;pos== OrdersTotal ();pos++)
         OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
         if (OrderMagicNumber()==Magic&&OrderSymbol()== Symbol ()&&OrderType()==OP_BUYSTOP)
          {
          OrderModify(OrderTicket(),Up+ 5 * Point ,High[ 3 ]-sl,High[ 3 ]+tp, 0 ,CLR_NONE);
          }
       } // это пара к той...
      }
     


Ve bu kod

 if ( Digits == 3 || Digits == 5 ) {tp=TP* 10 * Point ;sl=SL* 10 * Point ;} // условие для пятизнака
   else if ( Digits == 2 || Digits == 4 ) {tp=TP* Point ;sl=SL* Point ;} // условие для четырехзнака

init() içinde yazmak daha iyidir ve yazmamak daha iyidir

 double    point; // на уровне глобальных переменных

int OnInit ()
{
   point = Digits % 2 == 0 ? _Point : _Point * 10 ;
}

ve sonra start() içinde

tp = High[ 3 ]+TP*point;