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

 
saygıdeğer korunan kim bilir.
MT5'ten, örneğin bir web sitesine veya analiz için bazı sistemlere veri almak için böyle bir fırsat var https://www.mql5.com/ru/docs/integration/python_metatrader5
EA kullanmadan MT4'ten veri almak için aynı API var mı?
Документация по MQL5: Интеграция / MetaTrader для Python
Документация по MQL5: Интеграция / MetaTrader для Python
  • www.mql5.com
MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Belirtilen para birimlerinin emirlerini toplam kârla kapatma işlevi olan arkadaşlar.Tobizh iki alım emri açtı.EURUSD için ve diyelim ki USDCHF için ve böylece belirtilen kâra ulaşıldığında bot onları kapatsın.Goko'da varsa, isterim. kodun nasıl yazılacağını görün.
 
Tenimagalon :
Belirtilen para birimlerinin emirlerini toplam kârla kapatma işlevi olan arkadaşlar.Tobizh iki alım emri açtı.EURUSD için ve diyelim ki USDCHF için ve böylece belirtilen kâra ulaşıldığında bot onları kapatsın.Goko'da varsa, isterim. kodun nasıl yazılacağını görün.

Tutmak

 double MyProfit= 1000 ; // уровень профита
//+--------------------------------------------------------------------------------------------------------------------+
//| Expert tick function                                                                                               |
//+--------------------------------------------------------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (Open_Pr()>MyProfit)DelOrders();
//---
  }
//+--------------------------------------------------------------------------------------------------------------------+
//|  Суммарный профит в валюте депозита открытых позиций                                                               |
//+--------------------------------------------------------------------------------------------------------------------+
double Open_Pr( string sy= "" )
  { double p = 0 ;
   if (sy == "0" ) sy = Symbol ();
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos,SELECT_BY_POS)== true )
        {
         if (OrderSymbol() == sy || sy == "" ){p+=OrderProfit()+OrderSwap()+OrderCommission();}
        }
     }
   return (p);
  }
//+--------------------------------------------------------------------------------------------------------------------+
//| Функция удаления и закрытия ордеров                                                                                |
//+--------------------------------------------------------------------------------------------------------------------+
void DelOrders()
  {
   while ( true )
     {
       bool find_order= false ;
       //----
       for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
       if ( OrderSelect (pos,SELECT_BY_POS)== true )
       if (OrderSymbol()== _Symbol )
        {
         find_order= true ;
         //----
         if (OrderType()==OP_BUY)
           {
            RefreshRates(); int slip=( int )(((Ask-Bid)/ Point )* 2 );
             if (OrderClose(OrderTicket(),OrderLots(),Bid,slip, clrBlue )== false ){}
           }
         //----
         if (OrderType()==OP_SELL)
           {
            RefreshRates(); int slip=( int )(((Ask-Bid)/ Point )* 2 );
             if (OrderClose(OrderTicket(),OrderLots(),Ask,slip, clrRed )== false ){}
           }
         //----
         if (OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)
         if (OrderDelete(OrderTicket(), clrRed )== false ){}
         //----
         if (OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)
         if (OrderDelete(OrderTicket(), clrBlue )== false ){}
         Alert ( "Все ордера закрыты!" );
        } 
       if (find_order== false ) Alert ( "Нет ордеров!" ); break ;
     } 
  }
//+--------------------------------------------------------------------------------------------------------------------+
 
MakarFX :

Tutmak

Hey! kodu denediğim bir şey - nedense kapanmıyor

Anlık görüntü 5674

 
SanAlex :

Hey! kodu denediğim bir şey - nedense kapanmıyor


Toplam kârla, ayrı ayrı değil ....
 
SanAlex :

Hey! kodu denediğim bir şey - nedense kapanmıyor


Ben böyle yaptım - işe yarıyor!

 //+------------------------------------------------------------------+
//|                                             MakarFX_MyProfit.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
input string    t2= "------------ Exchange TP SL --------" ; //
input double    InpTProfit       = 10 ;             // Exchange TP уровень профита
input double    InpStopLoss      = 1000000 ;       // Exchange SL
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   ProfitOnTick();
  }
//+------------------------------------------------------------------+
//| Суммарный профит в валюте депозита открытых позиций              |
//+------------------------------------------------------------------+
bool ProfitOnTick( void )
  {
   bool res= false ;
   double PROFIT_BUY= 0.00 ;
   double PROFIT_SELL= 0.00 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) // returns the number of open positions
     {
       if ( OrderSelect (i,SELECT_BY_POS) && OrderSymbol()== Symbol ())
        {
         if (OrderSymbol()== Symbol () && OrderType()==OP_BUY)
           {
            PROFIT_BUY=PROFIT_BUY+ NormalizeDouble (OrderProfit(), 2 );
           }
         if (OrderSymbol()== Symbol () && OrderType()==OP_SELL)
           {
            PROFIT_SELL=PROFIT_SELL+ NormalizeDouble (OrderProfit(), 2 );
           }
        }
     }
   int Close_ticketb= 0 ;
   int totalb= OrdersTotal ();
   int b = 0 ;
   for (b = totalb; b >= 0 ; b--)
     {
       if ( OrderSelect (b,SELECT_BY_POS) && OrderSymbol()== Symbol ())
        {
         //OrderSelect(i,SELECT_BY_POS);
         if (OrderSymbol()== Symbol () && OrderType()==OP_BUY)
           {
             if (PROFIT_BUY<-InpStopLoss || PROFIT_BUY>=InpTProfit)
              {
               Close_ticketb = OrderClose(OrderTicket(),OrderLots(),MarketInfo( Symbol (),MODE_BID), 5 );
               PlaySound ( "ok.wav" );
              }
           }
        }
      res= true ;
     }
   int Close_tickets= 0 ;
   int totals= OrdersTotal ();
   int s = 0 ;
   for (s = totals; s >= 0 ; s--)
     {
       if ( OrderSelect (s,SELECT_BY_POS) && OrderSymbol()== Symbol ())
        {
         if (OrderSymbol()== Symbol () && OrderType()==OP_SELL)
           {
             if (PROFIT_SELL<-InpStopLoss || PROFIT_SELL>=InpTProfit)
              {
               Close_tickets = OrderClose(OrderTicket(),OrderLots(),MarketInfo( Symbol (),MODE_ASK), 5 );
               PlaySound ( "ok.wav" );
              }
           }
        }
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
 
Vladislav Andruschenko :
Toplam kârla, ayrı ayrı değil ....

ve işte orada! Öyleyse özür dilerim!

ben böyle batırdım

 //+------------------------------------------------------------------+
//| Check  closing                                                   |
//+------------------------------------------------------------------+
bool ProfitTarget( void )
  {
   bool res= false ;
   if ( AccountInfoDouble ( ACCOUNT_EQUITY )>=TargetProfit)
     {
      CloseAllOrders();
       Sleep (SLEEPTIME* 1000 );
      CloseAllOrders();
       ExpertRemove ();
      DeleteChart();
       PlaySound ( "expert.wav" );
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
 
SanAlex :

ve işte orada! Öyleyse özür dilerim!

ben böyle batırdım

İşte burada, savaşmaya hazır!

 //+------------------------------------------------------------------+
//|                                             MakarFX_MyProfit.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
#include <stdlib.mqh>
//--- Inputs
input string    t= "------------- Balans Parameters -----" ; //
input string    Template         = "ADX" ;         // Имя шаблона(without '.tpl')
input double    TargetProfit     = 1000000 ;       // Баланс + Прибыль(прибавить к балансу)
input string    t2= "------------ Exchange TP SL --------" ; //
input double    InpTProfit       = 10 ;             // Exchange TP уровень профита
input double    InpStopLoss      = 1000000 ;       // Exchange SL
//---
uint    SLEEPTIME        = 1 ;
bool    CloseOpenOrders  = true ;
double Price[ 2 ];
ENUM_TIMEFRAMES TimeFrame; // Change TimeFrame - Current = dont changed
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   ProfitOnTick();
   ProfitTarget();
  }
//+------------------------------------------------------------------+
//| Суммарный профит в валюте депозита открытых позиций              |
//+------------------------------------------------------------------+
bool ProfitOnTick( void )
  {
   bool res= false ;
   double PROFIT_BUY= 0.00 ;
   double PROFIT_SELL= 0.00 ;
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) // returns the number of open positions
     {
       if ( OrderSelect (i,SELECT_BY_POS) && OrderSymbol()== Symbol ())
        {
         if (OrderSymbol()== Symbol () && OrderType()==OP_BUY)
           {
            PROFIT_BUY=PROFIT_BUY+ NormalizeDouble (OrderProfit(), 2 );
           }
         if (OrderSymbol()== Symbol () && OrderType()==OP_SELL)
           {
            PROFIT_SELL=PROFIT_SELL+ NormalizeDouble (OrderProfit(), 2 );
           }
        }
     }
   int Close_ticketb= 0 ;
   int totalb= OrdersTotal ();
   int b = 0 ;
   for (b = totalb; b >= 0 ; b--)
     {
       if ( OrderSelect (b,SELECT_BY_POS) && OrderSymbol()== Symbol ())
        {
         //OrderSelect(i,SELECT_BY_POS);
         if (OrderSymbol()== Symbol () && OrderType()==OP_BUY)
           {
             if (PROFIT_BUY<-InpStopLoss || PROFIT_BUY>=InpTProfit)
              {
               Close_ticketb = OrderClose(OrderTicket(),OrderLots(),MarketInfo( Symbol (),MODE_BID), 5 );
               PlaySound ( "ok.wav" );
              }
           }
        }
      res= true ;
     }
   int Close_tickets= 0 ;
   int totals= OrdersTotal ();
   int s = 0 ;
   for (s = totals; s >= 0 ; s--)
     {
       if ( OrderSelect (s,SELECT_BY_POS) && OrderSymbol()== Symbol ())
        {
         if (OrderSymbol()== Symbol () && OrderType()==OP_SELL)
           {
             if (PROFIT_SELL<-InpStopLoss || PROFIT_SELL>=InpTProfit)
              {
               Close_tickets = OrderClose(OrderTicket(),OrderLots(),MarketInfo( Symbol (),MODE_ASK), 5 );
               PlaySound ( "ok.wav" );
              }
           }
        }
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
//| Check  closing                                                   |
//+------------------------------------------------------------------+
bool ProfitTarget( void )
  {
   bool res= false ;
   if ( AccountInfoDouble ( ACCOUNT_EQUITY )>=TargetProfit)
     {
      CloseAllOrders();
       Sleep (SLEEPTIME* 1000 );
      CloseAllOrders();
       ExpertRemove ();
      DeleteChart();
       PlaySound ( "expert.wav" );
      res= true ;
     }
//--- result
   return (res);
  }
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void CloseAllOrders( void )
  {
   int iOrders= OrdersTotal ()- 1 , i;
   if (CloseOpenOrders)
     {
       for (i=iOrders; i>= 0 ; i--)
        {
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) && (OrderType()<=OP_SELL) && GetMarketInfo() &&
            !OrderClose(OrderTicket(),OrderLots(),Price[ 1 -OrderType()], 0 ))
             Print (OrderError());
         if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
           {
             if (OrderDelete(OrderTicket()))
               Print (OrderError());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Function..: OrderError                                           |
//+------------------------------------------------------------------+
string OrderError( void )
  {
   int iError= GetLastError ();
   return ( StringConcatenate ( "Order:" ,OrderTicket(), " GetLastError()=" ,iError, " " ,ErrorDescription(iError)));
  }
//+------------------------------------------------------------------+
//| Function..: GetMarketInfo                                        |
//+------------------------------------------------------------------+
bool GetMarketInfo( void )
  {
   RefreshRates();
   Price[ 0 ]=MarketInfo(OrderSymbol(),MODE_ASK);
   Price[ 1 ]=MarketInfo(OrderSymbol(),MODE_BID);
   double dPoint=MarketInfo(OrderSymbol(),MODE_POINT);
   if (dPoint== 0 )
       return ( false );
   return (Price[ 0 ]> 0.0 && Price[ 1 ]> 0.0 );
  }
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void DeleteChart( void )
  {
   long currChart,prevChart= ChartFirst ();
   int i= 0 ,limit= 100 ;
   bool errTemplate;
   while (i<limit)
     {
      currChart= ChartNext (prevChart);
       if (TimeFrame!= PERIOD_CURRENT )
        {
         ChartSetSymbolPeriod (prevChart, ChartSymbol (prevChart),TimeFrame);
        }
      errTemplate= ChartApplyTemplate (prevChart,Template+ ".tpl" );
       if (!errTemplate)
        {
         Print ( "Error " , ChartSymbol (prevChart), "-> " , GetLastError ());
        }
       if (currChart< 0 )
         break ;
       Print (i, ChartSymbol (currChart), " ID =" ,currChart);
      prevChart=currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+
 
SanAlex :

İşte burada, savaşmaya hazır!

Neden "kemoterapi"?

İstediğiniz karakteri buraya ekleyin

Open_Pr( Symbol ())

ve her şey iyi olacak

PS Sasha, takas ve komisyonu hesaba katmadınız

 

MakarFX :

Neden "kemoterapi"?

İstediğiniz karakteri buraya ekleyin

ve her şey iyi olacak

PS Sasha, takas ve komisyonu hesaba katmadınız

Bir şekilde bu tür ayarlara alıştım - ama komisyon ve takaslar hakkında, bunların hepsi saçmalık, kâr benim için önemli - 100 koydum, benim için 90'ı kapatmasına izin verdim ve bu da iyi - ama bazen 110 kapanıyor

bu, komisyoncunun hangi harekete ve nasıl kapandığına bağlıdır. ancak işlev, ayarlarda verilen (toplam) değerinden tetiklenir.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ \\\\\\\\\\\\\\\

örneğin 5 - kapalı 5.20 ayarlarına girdim

Anlık Görüntü 567469

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

veya işte başka bir örnek - Uzmanın bulunduğu tüm çiftler için ( hepsi aynı ayarlara sahip ) toplam 70.000 kâr için her şeyi kapatan ayarlarda ayarladım - 15 kayıp çıktı

Anlık Görüntü 777469

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Şüphelendiğim bir şey - herkesin ne hakkında olduğunu anlamadığı. - toplam kâr açısından, bu bir şeydir - ancak her çift için bir kâr da vardır. Bu nedenle, her çifte bir uzman yüklemeniz gerekir.

bunun gibi !!!

Anlık görüntü 777469 eski

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Başka bir püf noktası nedir - işlev toplam kâr üzerinde çalıştığında, tek seferde tüm açık çizelgeler için şablonu değiştirir.

kendi şablonunuzu oluşturabilir ve ona bir isim verebilirsiniz - üzerine bir Uzmanı yeni bir meblağ veya istediğiniz herhangi bir şeyle kaydederek

Neden: