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

 
Alekseu Fedotov # :

Hayır, bu doğru değil.


OrderModify ile daha çok.

Ayrı bir blok olarak daha iyi.

Tamam teşekkürler!

 
Alexander Avksentyev # :

Hepsi bu. Yardım için teşekkürler.

 #property strict
//--- input parameters
input int       Magic            = 12345 ;
input int       iTakeProfit      = 10 ;
input int       iTrailStart      = 10 ;
input int       iTrailDist       = 10 ;
input int       iTrailStep       = 10 ;
input int       iTrailTakeProfit = 10 ;
input int       iStep            = 10 ;
input int       iSlippage        = 5 ;
input double    Lot              = 0.01 ;

int       Login = 4950287 ;
datetime time  = D'2022.01.01 00:00:00' ;
string    name  = "AutoP_v.3.0" ;
datetime time1 = 0 ;
double    price, TP, lastlot, minlot;
int       Forder;
int       TakeProfit,TrailStart,TrailDist,TrailStep,TrailTakeProfit,Step,Slippage;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
     if (AccountNumber() != Login)
       {
         int close = MessageBox ( "Неверный номер счёта" , "Ошибка" , MB_OK | MB_ICONSTOP );
         return ( INIT_FAILED );
       } else (AccountNumber() == Login);
             {
               int close = MessageBox ( "Проверка прошла успешно.Экcперт может приступить к работе." , "Инициализация" , MB_OK | MB_ICONEXCLAMATION );
             }
 //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//  
     if ( TimeCurrent () > time)
        {
         int close = MessageBox ( "Время работы закончилось!!!" , "Время работы" , MB_OK | MB_ICONSTOP );
         return ( INIT_FAILED );
        } else ( TimeCurrent () < time);
             {
               int close = MessageBox ( "Проверка времени работы прошла успешно.Эксперт может приступить к работе!" , "Время работы" , MB_OK | MB_ICONEXCLAMATION );
             }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
      TakeProfit     =iTakeProfit;
      TrailStart     =iTrailStart;
      TrailDist      =iTrailDist;
      TrailStep      =iTrailStep;
      TrailTakeProfit=iTrailTakeProfit;
      Step           =iStep;
      Slippage       =iSlippage;
     if ( Digits == 3 || Digits == 5 )
       {
        TakeProfit      *= 10 ;
        TrailStart      *= 10 ;
        TrailDist       *= 10 ;
        TrailStep       *= 10 ;
        TrailTakeProfit *= 10 ;
        Step            *= 10 ;
        Slippage        *= 10 ;
       }
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (CountTrades() == 0 )
      {
       double body = Close[ 1 ] - Open[ 1 ];
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
//Открытие позиции Buy
       if (body > 0 )
         {
         Forder = ( OrderSend ( _Symbol ,OP_BUY,Lot,Ask,Slippage, 0 , 0 , "Коммент" ,Magic, 0 ,Blue));
         if (Forder > 0 )
           {
             Print ( "Открыта Позиция BUY" );
             if ( OrderSelect (Forder, SELECT_BY_TICKET))
               {
               TP = NormalizeDouble ((Ask+TakeProfit* _Point ), _Digits );
               if (OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 ))
                   Print ( "Ордер Модифицирован BUY " ); 
               else 
                   Print ( "Ошибка Модификации Ордера BUY = " , GetLastError ());
               }
           }
         else
             Print ( "Ошибка Открытия Позиции BUY" );
       }
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//
//Открытие позиции Sell      
       if (body < 0 )
         {
         Forder = ( OrderSend ( _Symbol ,OP_SELL,Lot,Bid,Slippage, 0 , 0 , "Коммент Sell" ,Magic, 0 ,Red));
         if (Forder > 0 )
            {
             Print ( "Открыта Позиция SELL" );
             if ( OrderSelect (Forder, SELECT_BY_TICKET))
               {
               TP = NormalizeDouble ((Bid-TakeProfit* _Point ), _Digits );
               if (OrderModify(OrderTicket(),OrderOpenPrice(), 0 ,TP, 0 ))
                   Print ( "Ордер Модифицирован SELL " ); 
               else 
                   Print ( "Ошибка Модификации Ордера SELL = " , GetLastError ());
               }
            }
         else
             Print ( "Ошибка Открытия Позиции BUY" );
        }
      }
//---
  }
//+------------------------------------------------------------------+
//| Подсчет открытых ордеров                                         |
//+------------------------------------------------------------------+
int CountTrades() 
  {
   int count = 0 ;
   int i= OrdersTotal ()- 1 ;
   for ( int pos=i;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderMagicNumber()==Magic) count ++;
           }
        }
     }
   return (count);
  }
//+------------------------------------------------------------------+
 
MakarFX # :

teşekkürler

 
MakarFX # :

Açar açmaz hem al sat hem de aynı anda açmaya başladı. bunu varsaydım

 int CountTrades() 
  {
   int count = 0 ;
   int i= OrdersTotal ()- 1 ;
   for ( int pos=i;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES))
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderMagicNumber()==Magic) count ++;
           }
        }
     }
   return (count);
  }

Bu kısım büyü üzerinde açık bir pozisyon olup olmadığını kontrol edecek ve

 if (CountTrades() == 0 )
      {

Bu kısım her iki yöne de açılma imkanı vermeyecektir.

 
Alexander Avksentyev # :

Açar açmaz hem al sat hem de aynı anda açmaya başladı . bunu varsaydım

Bu kısım büyü üzerinde açık bir pozisyon olup olmadığını kontrol edecek ve

Bu kısım her iki yöne de açılma imkanı vermeyecektir.

Muhtemel , günlüğü göster veya ne zaman, hangi çiftte ve ne zaman yaz, böylece kontrol edebilirim.


Ve orada.

Bu kısım, halihazırda açık emirler varsa açılmasına izin vermez.

 
MakarFX # :

Muhtemel , günlüğü göster veya ne zaman, hangi çiftte ve ne zaman yaz, böylece kontrol edebilirim.


Ve orada.

Bu kısım, halihazırda açık olan emirlerin açılmasına izin vermez.

Blaine, üzgünüm.

Buna zaten karar verdim ve her mumda bir öncekini kapatmanın sonucuna göre yana açtığı ortaya çıktı.

Benim canim.

 
MakarFX # :

Muhtemel , günlüğü göster veya ne zaman, hangi çiftte ve ne zaman yaz, böylece kontrol edebilirim.


Ve orada.

Bu kısım, halihazırda açık emirler varsa açılmasına izin vermez.

10 farklı editörden parçalar, nerede bir şey değiştirsem kafam karıştı.

 
MakarFX # :

Muhtemel , günlüğü göster veya ne zaman, hangi çiftte ve ne zaman yaz, böylece kontrol edebilirim.


Ve orada.

Bu kısım, halihazırda açık emirler varsa açılmasına izin vermez.

Bir soru daha.

Uyarılar ne kadar ciddi olmalı?

 
Alexander Avksentyev # :

Bir soru daha.

Uyarılar ne kadar ciddi olmalı?

Her zaman. Dikkatsizlik nedeniyle birçok uyarı.
 
MakarFX # :

Terminalinizin bitliğini kontrol edin


PS, "32 bit kitaplığınızın" 64 Windows'ta çalışabileceği gerçeği değil.

Visual Studio'nun bunun için bir ayarı var

İrade. Evet bir ayar var konsol uygulaması oluştururken programın 32 sürümünü seçiyorsunuz ve başlıyor. İşaretçi 4 bayttır.