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

 
natawik :

Herkese merhaba, lütfen yardım edin!

Benim böyle bir sorunum var. mql5'ten vps aldım herşey yolunda gidiyor, kendime bir uzman kurdum, 8 çizelge kurdum ve bir uzman kurdum. Ve her şey VPS'ye aktarıldı.

Ve metatrader programını bilgisayardan kaldırmak zorunda kaldım çünkü benim değildi.

Ve şimdi bilgisayarımdan giriş yaptığımda

Her şey çalışıyor, uzman. Çalışıyor, ancak ayarlarda herhangi bir değişiklik yapmak için göremiyorum. Uzman Danışmanı ve çizelgeleri bilgisayarımdan yönetebilmem için nasıl geri alabilirim?

Teşekkür ederim!

bu durum için profilleri kaydetmeniz gerekir. Daha sonra VPS altında indirmek için.

 

Bir rapordaki tüm verileri bozulma olmadan excel'e nasıl aktaracağını kim bilebilir?

sadece kopyalarsanız, "kâr" sütunundaki verilerin bir kısmı tarih olarak dışa aktarılır, örneğin: 1,94 yerine 94 Ocak

Ne kadar kurtarmaya çalışsam da bu sorundan kurtulamıyorum.

 
законопослушный гражданин :

Bir rapordaki tüm verileri bozulma olmadan excel'e nasıl aktaracağını kim bilebilir?

sadece kopyalarsanız, "kâr" sütunundaki verilerin bir kısmı tarih olarak dışa aktarılır, örneğin: 1,94 yerine 94 Ocak

Ne kadar kurtarmaya çalışsam da bu sorundan kurtulamıyorum.

Yüklemeden önce veya yüklenen dosyayı açmadan önce Excell'de ondalık ayırıcıyı bir nokta ile değiştirin.

 
законопослушный гражданин :

Rapordaki tüm verileri bozulma olmadan exel'e nasıl aktaracağını kim bilebilir?

sadece kopyalarsanız, "kâr" sütunundaki verilerin bir kısmı tarih olarak dışa aktarılır, örneğin: 1,94 yerine 94 Ocak

Ne kadar kurtarmaya çalışsam da bu sorundan kurtulamıyorum.

Böyle

 
SGarnov :

Çalışılan durak sayısını da hesaba katmak gerekebilir. Örneğin , danışman tarihte bir durak bulacaktır ve bunlardan ikisi varsa, her ikisini de üç ve dördünü eklemesi gerekir, bunların tümü "kaybı durdurma sayısı" harici ayarına bağlıdır.

Bu sizin durumunuzda en iyisidir ve yalnızca sizinkinde değil, çoğu durumda, kapalı siparişlerin numaralandırılmasıyla işlemlerin geçmişine erişmek yerine, açık siparişlerin biletlerini bir dizide tutun. Bu diziyi periyodik olarak sıralayarak, bu siparişin basit bir koşulla kapatılıp kapatılmadığını kontrol edin.

 if (OrderCloseTime() != 0 ) // значит ордер закрылся…

Emir kapalı ise bilet ile seçip kârlı kapanıp kapanmadığını kontrol edebilirsiniz. Açıklıktan durağa kadar olan mesafeyi hemen kontrol edin ve bu mesafeye annenin izin verdiği kadar ekleyin.

Ve tüm bu manipülasyonlardan sonra , dizi boyutunu 0'a sıfırlayın ve bir döngüde dizi boyutunu artırın, şu anda açık siparişlerin biletleriyle yeniden doldurun.

 
Vladislav Andruschenko :

bu durum için profilleri kaydetmeniz gerekir. Daha sonra VPS altında indirmek için.

Bir de vps'i kapatıp herşeyi tekrar kurup vps'i tekrar açıp tüm çizelgeleri ve uzmanı size aktarırsam
Aynı yerde, o eski veriler üzerinizde olmayacak mı?
 

Merhaba

kodu anlamama yardım et

bir kod parçası ekledi, sınıfları var ve her şey yolunda gidiyor ama

Sınıflardan bazı işlevleri kendi başıma ayrı bir işleve bağlamak ve hatalar yazmak istiyorum

misal

 void OpenHandPosition( int tp)
   {
       string lot= 0.01
       bool response = actionTrade.ManageOrderSend(tp, lt, 0 , 0 , 0 , 0 , 0 ); //
   }

işte böyle çalışır

ve bu artık yok

 void OpenHandPosition( int tp)
   {

     int stopLoss   = GetStopLossPoints(size);
     int takeProfit = GetTakeProfitPoints();
     bool response = actionTrade.ManageOrderSend(tp, lt , stopLoss, takeProfit, 0 , 0 , 0 );

   }

her şey bu fonksiyonda çalışıyor

 void StrategyTrader::DoEntryTrade(TradeDirection tradeDir)

ama bu yok

OpenHandPosition( int tp)

Yardım

Dosyalar:
test.mq5  21 kb
 
SGarnov :

Uygulamanın zor olduğu sonucuna vardım, kodunuz çok daha basit, daha net ve daha mantıklı ama ..... nedense de eklemiyor. Ana şey pes etmemek.

Görünüşe göre tüm kurallar. Sormayı dene...

 //+------------------------------------------------------------------+
//|                                                 SGarnov.v2.1.mq4 |
//|                                           Copyright 2020, DrMak. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, DrMak."
#property link        " https://www.mql5.com "
#property version    "1.00"
#property strict
//--- input parameters
input int       T_Profit = 2 ;     // Коэффициент Take Profit
input int       S_Loss   = 200 ;   // Уровень Stop Loss
input double    O_Lots   = 0.01 ;   // Лоты
input int       SL_Count = 2 ;     // Количество убыточных ордеров
input int       Slippage = 30 ;     // Проскальзывание
input int       N_Magic  = 888 ;   // Magic

datetime T_Start;
double sl_price,tp_price,t_profit,s_loss;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---

//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- 
   Comment ( "" );
//--- 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   t_profit = S_Loss*T_Profit * Point ();
   tp_price = NormalizeDouble (t_profit+GetPointLoss(), Digits );
//---
   s_loss   = MathMax (S_Loss, MarketInfo( _Symbol , MODE_STOPLEVEL)) * Point ();
   sl_price = NormalizeDouble (s_loss, Digits );
//---
   // Удаляем отложенный ордер после профита
   if (CountOrders(- 1 )== 1 ) DeletePending();
//---
   // Проверяем серию убыточных ордеров
   if (CountOrders(- 1 )== 1 &&GetLossOrders()<SL_Count)
     {
       // Устанавливаем отложенный ордер
      SendPending();
     }
//---
   // Проверяем наличие ордеров
   if (CountOrders(- 1 )> 0 )
     {
       // Устанавливаем StopLoss/TakeProfit
      ModifyOrder();
     }
//---
   int a=( int )TimeStart();
   int b=GetLossOrders();
   int c=( int )((GetPointLoss()+t_profit)/ Point );
   
   Comment ( "Время начала цикли: " ,TimeToStr(a, TIME_SECONDS ), "\n" ,
           "Серия StopLoss ордеров: " ,b, "\n" ,
           "Размер TakeProfita: " ,c);
  }
//+------------------------------------------------------------------+
//| Модификация ордера                                               |
//+------------------------------------------------------------------+
void ModifyOrder()
  {
   double op= 0 ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos,SELECT_BY_POS)== true )
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderStopLoss()== 0 )
              {
               if (OrderType()==OP_BUY)
                 {op=OrderOpenPrice();
                   if (OrderModify(OrderTicket(), OrderOpenPrice(), op-sl_price, op+tp_price, OrderExpiration()))
                    { Print ( "Ордер модифицирован" );}
                   else
                    { Print ( "Ошибка модификации ордера:" , GetLastError ());}
                 }
               if (OrderType()==OP_SELL)
                 {op=OrderOpenPrice();
                   if (OrderModify(OrderTicket(), OrderOpenPrice(), op+sl_price, op-tp_price, OrderExpiration()))
                    { Print ( "Ордер модифицирован" );}
                   else
                    { Print ( "Ошибка модификации ордера:" , GetLastError ());}
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
//|  0 - ордера типа BUY          1 - ордера типа SELL               |
//|  2 - ордера типа BUYLIMIT     3 - ордера типа SELLLIMIT          |
//|  4 - ордера типа BUYSTOP      5 - ордера типа SELLSTOP           |
//|  6 - ордера типа Balance     -1 - Все типы ордеров               |
//+------------------------------------------------------------------+
int CountOrders( int or_ty=- 1 ) 
  {
   int cnt= 0 ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos,SELECT_BY_POS)== true )
        {
         if (OrderSymbol()== _Symbol )
           {
             if (or_ty< 0 || or_ty==OrderType()) cnt++;
           }
        }
     }
   return (cnt);
  }
//+------------------------------------------------------------------+
//| Установка отложенного ордера                                     |
//+------------------------------------------------------------------+
void SendPending()
  {
   double op= 0 ;
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS)== true )
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderType()==OP_BUY)
              {
               if (OrderStopLoss() != 0 )
                 {
                  op=OrderStopLoss();
                   if ( OrderSend ( _Symbol ,OP_SELLSTOP,O_Lots,op,Slippage, 0 , 0 , NULL ,N_Magic))
                    { Print ( "Отложенный ордер установлен" );}
                   else
                    { Print ( "Ошибка установки отложеного одера: " , GetLastError ());}
                 }
              }
             if (OrderType()==OP_SELL)
              {
               if (OrderStopLoss() != 0 )
                 {
                  op=OrderStopLoss();
                   if ( OrderSend ( _Symbol ,OP_BUYSTOP,O_Lots,op,Slippage, 0 , 0 , NULL ,N_Magic))
                    { Print ( "Отложенный ордер установлен" );}
                   else
                    { Print ( "Ошибка установки отложеного одера: " , GetLastError ());}
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|  Возвращает пункты убытка закрытых ордеров с начала цикла        |
//+------------------------------------------------------------------+
double GetPointLoss()
  {
   double result= 0 ,b= 0 ,s= 0 ;;
   int i=OrdersHistoryTotal();
   for ( int pos= 0 ; pos<i; pos++)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if (OrderProfit()< 0 )
                 {
                   if (OrderCloseTime()>=TimeStart())
                    {
                     if (OrderType()==OP_BUY)
                       {
                        b+=OrderOpenPrice()-OrderClosePrice();
                       }
                     if (OrderType()==OP_SELL)
                       {
                        s+=OrderClosePrice()-OrderOpenPrice();
                       }
                    }
                 }
              }
           }
        }
     }
   return (b+s);
  }
//+------------------------------------------------------------------+
//| Удаление отложенного ордера                                      |
//+------------------------------------------------------------------+
void DeletePending()
  {
   for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
     {
       if ( OrderSelect (i, SELECT_BY_POS)== true )
        {
         if (OrderSymbol()== _Symbol )
           {
             if (OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP)
              {
               if (OrderMagicNumber() == N_Magic)
                 {
                   if (OrderDelete(OrderTicket()))
                    { Print ( "Отложенный ордер удален" );}
                   else
                    { Print ( "Ошибка удаления отложеного одера: " , GetLastError ());}
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Возвращает время начала цикла                                    |
//+------------------------------------------------------------------+
datetime TimeStart()
  {
   datetime ts1= 0 ,ts2= 0 ;
   if ( OrdersTotal ()!= 0 )
     {
       for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
        {
         if ( OrderSelect (i, SELECT_BY_POS))
           {
             if (OrderMagicNumber()!=N_Magic)
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL)
                 {
                   if (OrderSymbol()== _Symbol )
                    {
                     if (ts1<OrderOpenTime())
                       {
                        ts1=OrderOpenTime();
                       }
                    }
                 }
              }
           }
        }
       for ( int pos= 0 ; pos<OrdersHistoryTotal(); pos++)
        {
         if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY))
           {
             if (OrderMagicNumber()!=N_Magic)
              {
               if (OrderType()==OP_BUY || OrderType()==OP_SELL)
                 {
                   if (OrderSymbol()== _Symbol )
                    {
                     if (ts2<OrderOpenTime())
                       {
                        ts2=OrderOpenTime();
                       }
                    }
                 }
              }
           }
        }
     }
   return ( MathMax (ts1,ts2));
  }
//+------------------------------------------------------------------+
//|  Возвращает кол-во серии убыточных ордеров                       |
//+------------------------------------------------------------------+
int GetLossOrders()
  {
   int cnt= 0 ;
   int i=OrdersHistoryTotal();
   for ( int pos= 0 ; pos<i; pos++)
     {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if ((OrderSymbol()== _Symbol ))
           {
             if (OrderCloseTime()>=TimeStart())
              {
               if (OrderProfit()< 0 ) cnt++;
              }
           }
        }
     }
   return (cnt);
  }
//+------------------------------------------------------------------+
 
MakarFX :

Görünüşe göre tüm kurallar. Sormayı dene...

Yardımınız için teşekkür ederim, sadece önümüzdeki hafta danışmanın doğru işleyişini yazabileceğim, bugün Cuma ve piyasaya giriş fiyatları aramıyorum.

 
natawik :
Bir de vps'i kapatıp herşeyi tekrar kurup vps'i tekrar açıp tüm çizelgeleri ve uzmanı size aktarırsam
Aynı yerde, o eski veriler üzerinizde olmayacak mı?
Sık sık böyle bir sorunla karşılaşıyorum, bir bilgisayar, bir terminal kuruyorum, sonra her şeyi taşıyorum, taşımaya devam ediyorum, grafikleri değiştiriyorum vb ve sonra bam, bir şeyi değiştirmem gerekiyor .... Her şeyi baştan yapmam gerekiyor Yeniden.