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

 
Порт-моне тв :

@MakarFX teşekkürler....derleme yaparken böyle hatalar oluyor

'CounterOrderTradeType' - işlev tanımlı değil birçok expt trade.mq4 için test edin 48 on dokuz

'CounterOrderTradeType' - yalnızca global, ad alanı veya sınıf kapsamında işlev bildirimlerine izin verilir birçok expt trade.mq4 için test edin 141 5


sarı ile vurgulananları düzeltin


 //+------------------------------------------------------------------+
//|                                                   sova_2bars.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern int Magic = 64777 ;
extern double Lot = 0.01 ;
extern int Slippage = 3 ;
extern int TakeProfit = 1600 ;
extern int StopLoss = 800 ;
extern int Experation = 0 ; 

int OrderOfSymbol;
//+------------------------------------------------------------------+
....
 //+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  { 
   OrderOfSymbol=CounterOrderTradeType(- 1 );

...

//-------------функции---------------------------------------

if ( Ask> 0 && Bid > 0 )
   {

 if (OrderOfSymbol< 1 )
     if (Close[ 1 ]>Open[ 1 ])
     if (Bears < - 0.00035 && MiddleBB > Ask)
         {
    ticket = OrderSend ( Symbol (),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку" , Magic, 0 , Blue);
         }
         
   
if (OrderOfSymbol== 1 )
   if (Bulls > 0.00035 && MiddleBB < Ask && Bears > 0 && Opentwo < Closetwo && Openthree < Closethree && BigTrand < Ask)
    CloseBuyPositions1();
   } 
//+------------------------------------------------------------------+
//| Подсчет ордеров потекущему символу                               |
//+------------------------------------------------------------------+
int CounterOrderTradeType( ENUM_ORDER_TYPE order_type)
   {
   int cnt= 0 ;
   //----
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
      {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES)== false ) continue ;
       if (OrderSymbol()!= _Symbol ) continue ;
       if (order_type == OrderType() || order_type == - 1 ) cnt++;
      }
   //----
   return (cnt);
   }
 
MakarFX :

sarı ile vurgulananları düzeltin


Bu segmentlerden bahsettiğimizi fark ettim ve değişkenleri yeniden bildirmeye çalıştım, yardımcı olmadı. Eğer mql4'teysem (5'incisine aşina değilim, eğer bir fark varsa) o yüzden tekrar yardım rica ediyorum.
 
Порт-моне тв :
Bu segmentlerden bahsettiğimizi fark ettim ve değişkenleri yeniden bildirmeye çalıştım, yardımcı olmadı. Eğer mql4'teysem (5'incisine aşina değilim, eğer bir fark varsa) o yüzden tekrar yardım rica ediyorum.
Çıkan kodu bana ver, neyin yanlış olduğunu göreyim
 
MakarFX :
Çıkan kodu bana ver, neyin yanlış olduğunu göreyim
//+------------------------------------------- --------------------+
//| sova_2bars.mq4 |
//| Telif Hakkı 2020, MetaQuotes Yazılım A.Ş. |
//| https://www.mql5.com |
//+------------------------------------------- --------------------+
#property telif hakkı "Copyright 2020, MetaQuotes Software Corp."
#özellik bağlantısı "https://www.mql5.com"
#özellik sürümü "1.00"
#mülkiyet katı

harici int Sihir = 64777;
harici çift Parti = 0.01;
dış int kayma = 3;
harici int TakeProfit = 1600;
harici int StopLoss = 800;
harici intExperation = 0;

double Openone, //ilk mumun açılış fiyatı
Opentwo, //ikinci mumun açık fiyatı
Closeone, //ilk mumun fiyatını kapat
Closetwo, // ikinci mumun fiyatını kapat
Lowone, //ilk mumun en düşük fiyatı
Lowtwo, // ikinci mumun düşük fiyatı
Low Three, // üçüncü mumun minimum fiyatı
Open Three, // üçüncü mumun açık fiyatı
Kapatüç, //üçüncü mumun fiyatını kapat
CloseOrder, // siparişi kapat
Highone, //ilk mumun yüksek fiyatı
Hightwo, // ikinci mumun yüksek fiyatı
Yüksek üç, //ikinci mumun en yüksek fiyatı
Highfour, // ikinci mumun maksimum fiyatı
Highfive, // ikinci mumun maksimum fiyatı
Highsix, // ikinci mumun maksimum fiyatı
Highseven, // ikinci mumun maksimum fiyatı
Yükseklik, //ikinci mumun maksimum fiyatı
Lowfour, //dördüncü mumun düşük fiyatı
Lowfive, // beşinci mumun düşük fiyatı
Lowsix, // altıncı mumun minimum fiyatı
Lowseven, // yedinci mumun düşük fiyatı
Düşük, // sekizinci mumun en düşük fiyatı
Closefour, //dördüncü mumun fiyatını kapat
açık dörtlü,
düşük15,
düşük25,
SLbuy, TPbuy, SLsell, TPsell, //dördüncü mumun açık fiyatı
siparişOpenPrice;
int bilet, bilet kapat;
int OrderOfSymbol;

//+------------------------------------------- --------------------+
//| uzman başlatma işlevi |
//+------------------------------------------- --------------------+
int OnInit()
{
dönüş(INIT_SUCCESSED);
}
//+------------------------------------------- --------------------+
//| Uzman başlatmasızlaştırma işlevi |
//+------------------------------------------- --------------------+
geçersiz OnDeinit(const int nedeni)
{
}
//+------------------------------------------- --------------------+
//| Uzman onay işlevi |
//+------------------------------------------- --------------------+
geçersiz OnTick()
{
OrderOfSymbol=KarşıSiparişTipi(-1);
//--- gerekli çubukların fiyatlarının belirlenmesi
Openone = NormalizeDouble(iOpen(Symbol(), Period(), 0), Digits);
Highone = NormalizeDouble(iHigh(Symbol(), Period(), 0), Digits);
Hightwo = NormalizeDouble(iHigh(Symbol(), Period(), 1), Digits);
High Three = NormalizeDouble(iHigh(Symbol(), Period(), 2), Digits);
Highfour = NormalizeDouble(iHigh(Symbol(), Period(), 3), Digits);
Highfive = NormalizeDouble(iHigh(Symbol(), Period(), 4), Digits);
Highsix = NormalizeDouble(iHigh(Symbol(), Period(), 5), Digits);
Highseven = NormalizeDouble(iHigh(Symbol(), Period(), 6), Digits);
Higheight = NormalizeDouble(iHigh(Symbol(), Period(), 7), Digits);
Opentwo = NormalizeDouble(iOpen(Symbol(), Period(), 1), Digits);
Open Three = NormalizeDouble(iOpen(Symbol(), Period(), 2), Digits);
Openfour = NormalizeDouble(iOpen(Symbol(), Period(), 3), Digits);
Closeone = NormalizeDouble(iClose(Symbol(), Period(), 0), Digits);
Closetwo = NormalizeDouble(iClose(Symbol(), Period(), 1), Digits);
Close Three = NormalizeDouble(iClose(Symbol(), Period(), 2), Digits);
Closefour = NormalizeDouble(iClose(Symbol(), Period(), 3), Digits);
Lowone = NormalizeDouble(iLow(Symbol(), Period(), 0), Digits);
Lowtwo = NormalizeDouble(iLow(Symbol(), Period(), 1), Digits);
Low Three = NormalizeDouble(iLow(Symbol(), Period(), 2), Digits);
Lowfour = NormalizeDouble(iLow(Symbol(), Period(), 3), Digits);
Lowfive = NormalizeDouble(iLow(Symbol(), Period(), 4), Digits);
Lowsix = NormalizeDouble(iLow(Symbol(), Period(), 5), Digits);
Lowseven = NormalizeDouble(iLow(Symbol(), Period(), 6), Digits);
Low15 = NormalizeDouble(iLow(Symbol(), Period(), 14), Digits);
Low25 = NormalizeDouble(iLow(Symbol(), Period(), 24), Digits);

//----gösterge - koşullar--------------------------------


double BigTrand = iMA(NULL, 0,50,0,MODE_SMA, PRICE_CLOSE, 1);
double SmallTrand = iMA(NULL, 0,5,0,MODE_SMA, PRICE_CLOSE, 1);
double LowerBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_LOWER,1);
double UpperBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_UPPER,1);
double MiddleBB = iBands(_Symbol,_Period,17,1,0,PRICE_CLOSE,MODE_MAIN,1);
double Bears = iBearsPower(_Symbol,_Period, 5, PRICE_CLOSE,0);
double Bulls = iBullsPower(_Symbol,_Period, 5, PRICE_CLOSE,0);
double Parab = iSAR(_Symbol,_Period,0.002, 1, 0);

SLbuy = NormalizeDouble(Sor - Kaybı Durdur*Puan, 5);
TPbuy = NormalizeDouble(Sor + Kâr Al*Puan, 5);
SLsell = NormalizeDouble(Teklif + StopLoss*Puan, 5);
TPsell = NormalizeDouble(Teklif - Kâr Al*Puan, 5);


//-------------işlevler---------------------------------- -----




if (Sor>0 && Teklif>0)
{

if(SiparişToplam()<1)
if (Kapat[1]>Aç[1])
if(Sor>AltBB)
{
bilet = OrderSend(Symbol(),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, " buy order open", Magic, 0, Blue);
}
if (OrdersTotal()==1)
if(Teklif>ÜstBB)
CloseBuyPositions1();
}

//+------------------------------------------- --------------------+
//| Geçerli sembol için siparişleri sayma |
//+------------------------------------------- --------------------+
int CounterOrderTradeType(ENUM_ORDER_TYPE order_type)
{
int cnt=0;
//----
for(int pos=OrdersTotal()-1;pos>=0;pos--)
{
if(OrderSelect(kon, SELECT_BY_POS, MODE_TRADES)==yanlış) devam et;
if(OrderSymbol()!=_Symbol) devam ediyor;
if(order_type == OrderType() || order_type == -1) cnt++;
}
//----
dönüş(cnt);
}


//----fonksiyonun sonu
}
//------------------------------------------------ ---------------------
geçersiz CloseBuyPositions1()
{
for(int i = OrdersTotal() - 1; i >= 0; i--)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderMagicNumber() == Sihirli)
if(OrderSymbol() == Symbol())
{


if(OrderType()==OP_BUY)
{
OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL);
}
}
}




Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
 
Порт-моне тв :

braket orada değildi ... yakalamak

 //+------------------------------------------------------------------+
//|                                                   sova_2bars.mq4 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

extern int Magic = 64777 ;
extern double Lot = 0.01 ;
extern int Slippage = 3 ;
extern int TakeProfit = 1600 ;
extern int StopLoss = 800 ;
extern int Experation = 0 ;

double Openone,     //цена открытия первой свечи
Opentwo,     //цена открытия второй свечи
Closeone,   //цена закрытия первой свечи
Closetwo,   //цена закрытия второй свечи
Lowone,     //цена минимальная первой свечи
Lowtwo,     //цена минимальная второй свечи
Lowthree,   //цена минимальная третьей свечи
Openthree,   //цена открытия третьей свечи
Closethree, //цена закрытия третьей свечи
CloseOrder, //закрыть ордер
Highone,     //цена максимальная первой свечи
Hightwo,     //цена максимальная второй свечи
Highthree,     //цена максимальная второй свечи
Highfour,     //цена максимальная второй свечи
Highfive,     //цена максимальная второй свечи
Highsix,     //цена максимальная второй свечи
Highseven,     //цена максимальная второй свечи
Higheight,     //цена максимальная второй свечи
Lowfour,     //цена минимальная четвертой свечи
Lowfive,     //цена минимальная пятой свечи
Lowsix,     //цена минимальная шестой свечи
Lowseven,     //цена минимальная седьмой свечи
Loweight,     //цена минимальная восьмой свечи
Closefour,   //цена закрытия четвертой свечи
Openfour,
Low15,
Low25, 
SLbuy, TPbuy,  SLsell, TPsell,   //цена открытия четвертой свечи
OrderOpenPrice;
int ticket, ticketclose; 
int OrderOfSymbol;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
  OrderOfSymbol=CounterOrderTradeType(- 1 ); 
//--- определение цен необходимых баров
   Openone = NormalizeDouble ( iOpen ( Symbol (), Period (), 0 ), Digits );
   Highone = NormalizeDouble ( iHigh ( Symbol (), Period (), 0 ), Digits );
   Hightwo = NormalizeDouble ( iHigh ( Symbol (), Period (), 1 ), Digits );
   Highthree = NormalizeDouble ( iHigh ( Symbol (), Period (), 2 ), Digits );
   Highfour = NormalizeDouble ( iHigh ( Symbol (), Period (), 3 ), Digits );
   Highfive  = NormalizeDouble ( iHigh ( Symbol (), Period (), 4 ), Digits );
   Highsix  = NormalizeDouble ( iHigh ( Symbol (), Period (), 5 ), Digits );
   Highseven = NormalizeDouble ( iHigh ( Symbol (), Period (), 6 ), Digits );
   Higheight = NormalizeDouble ( iHigh ( Symbol (), Period (), 7 ), Digits );
   Opentwo = NormalizeDouble ( iOpen ( Symbol (), Period (), 1 ), Digits );
   Openthree = NormalizeDouble ( iOpen ( Symbol (), Period (), 2 ), Digits );
   Openfour = NormalizeDouble ( iOpen ( Symbol (), Period (), 3 ), Digits );
   Closeone = NormalizeDouble ( iClose ( Symbol (), Period (), 0 ), Digits );
   Closetwo = NormalizeDouble ( iClose ( Symbol (), Period (), 1 ), Digits );
   Closethree = NormalizeDouble ( iClose ( Symbol (), Period (), 2 ), Digits );
   Closefour = NormalizeDouble ( iClose ( Symbol (), Period (), 3 ), Digits );
   Lowone = NormalizeDouble ( iLow ( Symbol (), Period (), 0 ), Digits );
   Lowtwo = NormalizeDouble ( iLow ( Symbol (), Period (), 1 ), Digits );
   Lowthree = NormalizeDouble ( iLow ( Symbol (), Period (), 2 ), Digits );
   Lowfour = NormalizeDouble ( iLow ( Symbol (), Period (), 3 ), Digits );
   Lowfive = NormalizeDouble ( iLow ( Symbol (), Period (), 4 ), Digits );
   Lowsix = NormalizeDouble ( iLow ( Symbol (), Period (), 5 ), Digits );
   Lowseven = NormalizeDouble ( iLow ( Symbol (), Period (), 6 ), Digits );
   Low15 = NormalizeDouble ( iLow ( Symbol (), Period (), 14 ), Digits );
   Low25 = NormalizeDouble ( iLow ( Symbol (), Period (), 24 ), Digits );

     
//----индикатор - условия--------------------------------------


double BigTrand = iMA ( NULL , 0 , 50 , 0 , MODE_SMA , PRICE_CLOSE , 1 );
double SmallTrand = iMA ( NULL , 0 , 5 , 0 , MODE_SMA , PRICE_CLOSE , 1 );
double LowerBB = iBands ( _Symbol , _Period , 17 , 1 , 0 , PRICE_CLOSE ,MODE_LOWER, 1 );
double UpperBB = iBands ( _Symbol , _Period , 17 , 1 , 0 , PRICE_CLOSE ,MODE_UPPER, 1 );
double MiddleBB = iBands ( _Symbol , _Period , 17 , 1 , 0 , PRICE_CLOSE ,MODE_MAIN, 1 );
double Bears = iBearsPower ( _Symbol , _Period , 5 , PRICE_CLOSE , 0 );
double Bulls = iBullsPower ( _Symbol , _Period , 5 , PRICE_CLOSE , 0 );
double Parab = iSAR ( _Symbol , _Period , 0.002 , 1 , 0 );

SLbuy = NormalizeDouble (Ask - StopLoss* Point , 5 ); 
TPbuy = NormalizeDouble (Ask + TakeProfit* Point , 5 );
SLsell = NormalizeDouble (Bid + StopLoss* Point , 5 ); 
TPsell = NormalizeDouble (Bid - TakeProfit* Point , 5 );


//-------------функции---------------------------------------
            
if ( Ask> 0 && Bid > 0 )
   {

 if ( OrdersTotal ()< 1 )
     if (Close[ 1 ]>Open[ 1 ])
     if (Ask>LowerBB)
         {
    ticket = OrderSend ( Symbol (),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку" , Magic, 0 , Blue);
         }
         
   
if ( OrdersTotal ()== 1 )
   if (Bid>UpperBB)
    CloseBuyPositions1();
   }
}
//----конец функции
//---------------------------------------------------------------------
void CloseBuyPositions1()
      {
      
       for ( int i = OrdersTotal () - 1 ; i >= 0 ; i--)
       if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
         if (OrderMagicNumber() == Magic)
             if (OrderSymbol() == Symbol ())
              {


          
           if (OrderType()==OP_BUY)
             {
               if (OrderClose(OrderTicket(), OrderLots(), Bid, 3 , NULL )){ Print ( "Order Close" );}
             }
          }
       } 
//+------------------------------------------------------------------+
//| Подсчет ордеров потекущему символу                               |
//+------------------------------------------------------------------+
int CounterOrderTradeType( ENUM_ORDER_TYPE order_type)
   {
   int cnt= 0 ;
   //----
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
      {
       if ( OrderSelect (pos, SELECT_BY_POS, MODE_TRADES)== false ) continue ;
       if (OrderSymbol()!= _Symbol ) continue ;
       if (order_type == OrderType() || order_type == - 1 ) cnt++;
      }
   //----
   return (cnt);
   }   
       
 
Порт-моне тв :

bunu anlamıyorum

 if ( Ask> 0 && Bid > 0 )

niye ya?

 
MakarFX :

bunu anlamıyorum

niye ya?

bu benim, bir kez daha tüm parantezlerle ek işlevler reçete etmiyorum, hala bazı genel olanları puanlıyorum ve sonra bu genel olarak anlaşılabilir değeri değiştirerek bu işlev üzerindeki göstergeleri deniyorum
 
Порт-моне тв :
bu benim, böylece bir kez daha tüm parantezlerle ek fonksiyonlar yazmıyorum, hala bazı genel olanları puanlıyorum, sonra bu fonksiyon üzerinde göstergelerle deneyler yapıyorum

yapardım

 //-------------функции---------------------------------------
            
 if (OrderOfSymbol< 1 )
     if (Close[ 1 ]>Open[ 1 ])
       if (Ask>LowerBB)
         {
         if ( OrderSend ( Symbol (),OP_BUY, Lot, Ask, Slippage, SLbuy, TPbuy, "открыт ордер на покупку" , Magic, 0 , Blue)){ Print ( "Buy Order Open" );}
         }
         
   for ( int pos= 0 ;pos< OrdersTotal ();pos++)
       if ( OrderSelect (pos,SELECT_BY_POS,MODE_TRADES))
         if (OrderSymbol()== _Symbol )
             if (Bid>UpperBB)
               CloseBuyPositions1();
   }
//----конец функции
 
MakarFX :

Мне вот это не понятно

зачем?


sorun çözülmedi, bir çizelgede bir sipariş açtı, ikincisinde istemiyor, görünüşe göre OrdersTotal'ı herkes için tekrar düşünüyor (sihirbaz bir şeyi değiştirdiyse, ayrı bir danışman bile derledi)

 
Порт-моне тв :

sorun çözülmedi, bir çizelgede bir sipariş açtı, ikincisinde istemiyor, görünüşe göre OrdersTotal'ı herkes için tekrar düşünüyor (sihirbaz bir şeyi değiştirdiyse, ayrı bir danışman bile derledi)

İşlevi yazımdan koyun. Benim için çalışıyor