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

 
Lütfen bana nasıl para çekileceğini söyle?
 
Talep dün gönderildi, üzerinden bir günden fazla zaman geçti ve sessizlik
 
ivlyeva.tatyana6 :
Talep dün gönderildi, üzerinden bir günden fazla zaman geçti ve sessizlik

1. En yakın ATM'ye gidin, bir kart takın, bir pin kodu girin...

2. En yakın bankaya git göz yap sonra duruma göre...

3. Markete gidin. Bir makine satın alın. Bankaya git. Para çekme (sadece kendinizinkini değil, her şeyi çekebilirsiniz ...) ...

4. MMM'den çekilmeniz gerekiyorsa, bir tank bile size yardımcı olmaz!

Ama cidden, yapmıyorsun!

 
//+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                               http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright    "2005-2014, MetaQuotes Software Corp."
#property link          " http://www.mql4.com "
input double TakeProfit    = 3160 ;
input double Lots          = 0.5 ;
input double TrailingStop  = 1040 ;
input int OpenLevel = 22 ;
input int CloseLevel= 77 ;
input int      Period = 85 ;
input int     Period1 = 57 ;
int LastBars= 0 ;
extern int Magic = 110725 ;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick ( void )
  {
   
 
   int     cnt,ticket,total;
//---
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external 
// variables (Lots, StopLoss, TakeProfit, 
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
//---
//--- Trade only if new bar has arrived
   if (LastBars!= Bars ) LastBars= Bars ;
   else return ( 0 );
   if ( Bars < 100 )
     {
       Print ( "bars less than 100" );
       return ;
     }
   if (TakeProfit< 10 )
     {
       Print ( "TakeProfit less than 10" );
       return ;
     }
//--- to simplify the coding and speed up access data are put into internal variables
   
   total= OrdersTotal ();
   if (total< 1 )
     {
       //--- no opened orders identified
       if (AccountFreeMargin()<( 1000 *Lots))
        {
         Print ( "We have no money. Free Margin = " ,AccountFreeMargin());
         return ;
        }
       //--- check for long position (BUY) possibility
     if ( iRSI ( NULL , 0 ,OpenLevel, PRICE_LOW , Period )> iRSI ( NULL , 0 ,CloseLevel, PRICE_HIGH ,Period1)) 
        {
         ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 3 ,Bid-TakeProfit* Point ,Bid+TakeProfit* Point , "USDCADH4" ,Magic, 0 ,Green);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print ( "BUY order opened : " ,OrderOpenPrice());
           }
         else
             Print ( "Error opening BUY order : " , GetLastError ());
         return ;
        }
       //--- check for short position (SELL) possibility
       if ( iRSI ( NULL , 0 ,OpenLevel, PRICE_LOW ,Period1)< iRSI ( NULL , 0 ,CloseLevel, PRICE_HIGH , Period )) 
        {
         ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 3 ,Ask+TakeProfit* Point ,Ask-TakeProfit* Point , "USDCADH4" ,Magic, 0 ,Red);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print ( "SELL order opened : " ,OrderOpenPrice());
           }
         else
             Print ( "Error opening SELL order : " , GetLastError ());
        }
       //--- exit from the "no opened orders" block
       return ;
     }
//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for (cnt= 0 ;cnt<total;cnt++)
     {
       if (! OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES))
         continue ;
       if (OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()== Symbol ())   // check for symbol
        {
         //--- long position is opened
         if (OrderType()==OP_BUY)
           {
             //--- should it be closed?
               if ( iRSI ( NULL , 0 ,OpenLevel, PRICE_LOW ,Period1)< iRSI ( NULL , 0 ,CloseLevel, PRICE_HIGH , Period )) 
              {
               //--- close order and exit
               if (!OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,Violet))
                   Print ( "OrderClose error " , GetLastError ());
               return ;
              }
             //--- check for trailing stop
             if (TrailingStop> 0 )
              {
               if (Bid-OrderOpenPrice()> Point *TrailingStop)
                 {
                   if (OrderStopLoss()<Bid- Point *TrailingStop)
                    {
                     //--- modify order and exit
                     if (!OrderModify(OrderTicket(),OrderOpenPrice(),Bid- Point *TrailingStop,OrderTakeProfit(), 0 ,Green))
                         Print ( "OrderModify error " , GetLastError ());
                     return ;
                    }
                 }
              }
           }
         else // go to short position
           {
             //--- should it be closed?
           if ( iRSI ( NULL , 0 ,OpenLevel, PRICE_LOW , Period )> iRSI ( NULL , 0 ,CloseLevel, PRICE_HIGH ,Period1)) 
              {
               //--- close order and exit
               if (!OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,Violet))
                   Print ( "OrderClose error " , GetLastError ());
               return ;
              }
             //--- check for trailing stop
             if (TrailingStop> 0 )
              {
               if ((OrderOpenPrice()-Ask)>( Point *TrailingStop))
                 {
                   if ((OrderStopLoss()>(Ask+ Point *TrailingStop)) || (OrderStopLoss()== 0 ))
                    {
                     //--- modify order and exit
                     if (!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ Point *TrailingStop,OrderTakeProfit(), 0 ,Red))
                         Print ( "OrderModify error " , GetLastError ());
                     return ;
                    }
                 }
              }
           }
        }
     }
//---
  }
//+------------------------------------------------------------------+

İyi günler Lütfen çözmeme yardım et.

 
darirunu1 :

İyi günler Lütfen çözmeme yardım et.

Ve emir bulmak için sihirbazın nerede?
 

En üstte yazan seçenek ile danışman manuel olarak açılan işlemleri kapatır,

ve eğer böyle yazarsan

 if (! OrderSelect (cnt,SELECT_BY_POS,MODE_TRADES))
         continue ;
       if (OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()== Symbol ()&& OrderMagicNumber()==Magic)   // check for symbol

Daha sonra manuel olarak açılan fırsatlarda başkalarının fırsatlarını kapatmaz, ancak manuel olarak açılan fırsatlar varsa kendi fırsatlarını da açmaz.

 
darirunu1 :

En üstte yazan seçenek ile danışman manuel olarak açılan işlemleri kapatır,

ve eğer böyle yazarsan

Daha sonra manuel olarak açılan fırsatlarda başkalarının fırsatlarını kapatmaz, ancak manuel olarak açılan fırsatlar varsa kendi fırsatlarını da açmaz.

açarken hala sihir için seçime ihtiyaç var
 
MakarFX :
açarken hala sihir için seçime ihtiyaç var
 ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 3 ,Ask+TakeProfit* Point ,Ask-TakeProfit* Point , "USDCADH4" ,Magic, 0 ,Red);

Ve bu nedir? Açıldığında belirtilir. Gerçek şu ki, birkaç danışman kullandığınızda sorun olmaz, sorun yalnızca hesapta manuel olarak bir işlem açıldığında ortaya çıkar.

Hesapta manuel olarak açılan işlemler göründüğü anda, danışmanlar derhal çalışmayı durdurur.

Kodda bu total=OrdersTotal(); öğesini kaldırır kaldırmaz;

if(toplam<1)

danışmanlar hemen açılır, ancak çok sayıda işlem açar

 
darirunu1 :

Ve bu nedir? Açıldığında belirtilir. Gerçek şu ki, birkaç danışman kullandığınızda sorun olmaz, sorun yalnızca hesapta manuel olarak bir işlem açıldığında ortaya çıkar.

Hesapta manuel olarak açılan işlemler göründüğü anda, danışmanlar derhal çalışmayı durdurur.

Kodda bu total=OrdersTotal(); öğesini kaldırır kaldırmaz;

if(toplam<1)

danışmanlar hemen açılır, ancak çok sayıda işlem açar

Bahsettiğim şey bu. OrdersTotal() tüm emirlerdir ve bir danışmanın emirlerine ihtiyacınız vardır.

   if (CountOrders( "" , - 1 , Magic)<1)
     {
     открытие ордеров
     }
//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY                                                       |
//|  1 - ордера типа SELL                                                      |
//|  2 - ордера типа BUYLIMIT                                                  |
//|  3 - ордера типа SELLLIMIT                                                 |
//|  4 - ордера типа BUYSTOP                                                   |
//|  5 - ордера типа SELLSTOP                                                  |
//+----------------------------------------------------------------------------+
int CountOrders( string symb= "" , int or_ty=- 1 , int magiс=- 1 ) 
  {
   int cnt= 0 ;
   if (symb== "0" ) symb= _Symbol ;
   for ( int pos= OrdersTotal ()- 1 ;pos>= 0 ;pos--)
     {
       if ( OrderSelect (pos,SELECT_BY_POS)== true )
        {
         if ((OrderSymbol()==symb || symb== "" )&&(or_ty< 0 || or_ty==OrderType()))
           {
             if (magiс< 0 || OrderMagicNumber()==magiс) cnt++;
           }
        }
     }
   return (cnt);
  }
 
MakarFX :

Bahsettiğim şey bu. OrdersTotal() tüm emirlerdir ve bir danışmanın emirlerine ihtiyacınız vardır.

 if (CountOrders( "" , - 1 , Magic)<1)
     {

Bunun yerine

toplam=SiparişToplam();

if(toplam<1) veya bunu da bırakalım mı?