[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 284

 
 
waitra >> :

int NumberOfPos_HISTORY

Denedim, sadece açık mevcut pozisyonların sayısını hesaba katıyor, geçmiş siparişin nasıl kapandığını hesaba katmıyor - değer sıfıra dönüyor, belki başka bir şey değişecek mi?

İşte hoşuma giden şey. I. Kim'in başka bir işlevini aldım ve biraz değiştirdim.

Saat gibi çalışır

BAŞLAT işlevinde, kontrole koyabilirsiniz

Comment ("ордера на истории= ",NumberOfPos_HISTORY_2(NULL,-1,Magic));

Ve işte fonksiyonun kendisi:

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru            |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                  |
//|  Описание : Возвращает кол-во ордеровиз из  истории счета  |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                           |
//|    sy - наименование инструмента   (""   - любой символ, |
//|                                     NULL - текущий символ)        |
//|    op - операция                   (-1   - любая позиция)       |
//|    mn - MagicNumber                (-1   - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfPos_HISTORY_2 ( string sy = "" , int op = - 1 , int mn = - 1 ) {
     int      i , k = OrdersHistoryTotal ( ) , kp = 0 ;
  if ( sy = = "0" ) sy = Symbol ( ) ;
  for ( i = 0 ; i < k ; i + + ) {
    if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) {
      if ( OrderSymbol ( ) = = sy | | sy = = "" ) {
        if ( OrderType ( ) = = OP_BUY | | OrderType ( ) = = OP_SELL ) {
          if ( op < 0 | | OrderType ( ) = = op ) {
            if ( mn < 0 | | OrderMagicNumber ( ) = = mn ) {               
                if ( OrderProfit ( ) < 0 | | OrderProfit ( ) > = 0 ) kp + + ;           
            }  } } } }  }  return ( kp ) ; } 


 

Herkese merhaba!!

 //+------------------------------------------------------------------+
//|                                                   SimpleMA22.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

//---- input parameters
extern int        MAFP = 21 ;
extern int        MASP = 55 ;
extern double     Lots = 0.1 ;
extern int        StopLoss = 60 ;
extern int        TakeProfit = 30 ;
extern int        MagicNumber = 123456 ;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init ( )
   {
//----
   
//----
   return ( 0 ) ;
   }
  
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit ( )
   {
//----
   
//----
   return ( 0 ) ;
   }
   
bool CheckOrders ( int Type )
{
 bool Result = True ;
 for ( int i = 0 ; i < OrdersTotal ( ) ; i + + )
   if ( OrderSelect ( i , SELECT_BY_POS ) )
   if ( OrderMagicNumber ( ) = = MagicNumber & & OrderSymbol ( ) = = Symbol ( ) )
       if ( OrderType ( ) = = Type )
         {
         if ( Type = = OP_BUY )
           if ( ! OrderClose ( OrderTicket ( ) , OrderLots ( ) , Bid , 0 ) )
             Result = False ;
         if ( Type = = OP_SELL )
           if ( ! OrderClose ( OrderTicket ( ) , OrderLots ( ) , Ask , 0 ) )
             Result = False ;
         } 
         else Result = False ;
 return ( Result ) ; 
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start ( )
   {
//----
     // Узнаем уровень стопов и спрэд
     int Spread = MarketInfo ( Symbol ( ) , MODE_SPREAD ) ;
     int StopLevel = MarketInfo ( Symbol ( ) , MODE_STOPLEVEL ) ;

     // Рассчитываем значения средних на 0-ом и 1-ом барах
     double MAF_0 = iMA ( NULL , 0 , MAFP , 0 , 1 , 1 , 0 ) ;
     double MAF_1 = iMA ( NULL , 0 , MAFP , 0 , 1 , 1 , 1 ) ;
     double MAS_0 = iMA ( NULL , 0 , MASP , 0 , 1 , 1 , 0 ) ;
     double MAS_1 = iMA ( NULL , 0 , MASP , 0 , 1 , 1 , 1 ) ;
    
     // открытие позиции Buy покупка
     if ( MAF_1 < MAS_1 & & MAF_0 > MAS_0 )
     if ( CheckOrders ( OP_SELL ) )
       {
       if ( StopLoss < = StopLevel + Spread )
         double SL = 0 ;
         else
         SL = Ask - StopLoss * Point ;
       if ( TakeProfit < = StopLevel - Spread )
         double TP = 0 ;
         else
         TP = Ask + TakeProfit * Point ;
       if ( ! OrderSend ( Symbol ( ) , OP_BUY , Lots , Ask , 5 , SL , TP , NULL , MagicNumber ) )
         Print ( "Не открыт ордер Buy. Ошибка №" , GetLastError ( ) ) ; 
       }
    
     // Открытие позиции Sell продажа  
     if ( MAF_1 > MAS_1 & & MAF_0 < MAS_0 )
     if ( CheckOrders ( OP_BUY ) )
       {
       if ( StopLoss < = StopLevel + Spread )
         SL = 0 ;
         else
         SL = Bid + StopLoss * Point ;
       if ( TakeProfit < = StopLevel - Spread )
         TP = 0 ;
         else
         TP = Bid - TakeProfit * Point ;
       if ( ! OrderSend ( Symbol ( ) , OP_SELL , Lots , Bid , 5 , SL , TP , NULL , MagicNumber ) )
         Print ( "Не открыт ордер Sell. Ошибка №" , GetLastError ( ) ) ; 
       }
//----
   return ( 0 ) ;
   } //+------------------------------------------------------------------+


Beyinler buğulandı, buğulandı ve kapatıldı .....

Sarhoşların nasıl hendek kazacağını veya evsizler tarafından çöp toplamayı nasıl organize edeceğini bulmak muhtemelen ..........'den daha kolaydır.

Bu konunun başında bir yerde benimkine benzer bir sorun dile getirildi. Okudum, okudum .... Hala girmedim ama konuşma bayraklarla ilgiliydi ...

Fikir basit. En basit SimpleMA, sebe için biraz değiştirilmiş olsa da, temelde değil.

EA'nın satın alması (satın alma için) için HANGİ işlevleri eklemeniz gerekiyor, sipariş bir alımla tetiklenecek ve bir sonraki sipariş bir satış koşuluna, yani satılık MA'ların kesişimine göre verilecektir. ?

Başka bir şart var mı yok mu.

 

Belki https://www.mql5.com/ru/forum/107476/page21 işlevi yardımcı olacaktır.

isCloseLastPosByTake() işlevi.
Bu fonksiyon, son pozisyonu alma ile kapatmak için bayrağı döndürür.

Bayrak kaldırıldı - Doğru - TakeProfit çalıştı.

Bayrak atlandı - Yanlış - pozisyon başka bir nedenle kapatıldı.


Fonksiyonun kendisini kodun en sonuna koyun. Ve satış şartlarına ekleyin:

 if ( isCloseLastPosByTake ( NULL , OP_BUY , MagicNumber ) = = true ) { //продаем
 
xmurik писал(а) >>
EUR/USD çiftinde.
 //+------------------------------------------------------------------+
//|                                                       скрипт.mq4 |
//|                      Copyright © 2009, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link       "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start ( )
   {
//----
   int kolvo_barov = 1000 ;
   double start_price = iOpen ( Symbol ( ) , 0 , kolvo_barov ) ;
   int handle ;
   handle = FileOpen ( "my_data.csv" , FILE_WRITE|FILE_CSV , '\t' ) ;
   if ( handle > 0 ) {
       while ( kolvo_barov > 1 ) {
         if ( iHigh ( Symbol ( ) , 0 , kolvo_barov ) > start_price + 0.01 ) {
             FileWrite ( handle , "+100" ) ;
            start_price = start_price + 0.01 ;
         }       
         if ( iHigh ( Symbol ( ) , 0 , kolvo_barov ) < start_price + 0.01 ) {
             FileWrite ( handle , "-100" ) ;
            start_price = start_price - 0.01 ;
         }      kolvo_barov--;
       }
       FileClose ( handle ) ;
   }
   return ( 0 ) ;
}
//+------------------------------------------------------------------+
Bak. Sadece ben kontrol etmedim. hatalar olabilir
 

Kibar insanlar. Momentumun neden momentum olmadığını anlamıyorum (resme bakın) :).


İtme

Lütfen neden sıfırın üzerinde olduğunu açıklar mısınız?
 
rid писал(а) >>

İşte hoşuma giden şey. I. Kim'in başka bir işlevini aldım ve biraz değiştirdim.

Saat gibi çalışır

BAŞLAT işlevinde, kontrole koyabilirsiniz


Ve işte fonksiyonun kendisi:

Evet, her şey çalışıyor! kurtul , çok teşekkür ederim! Teşekkür ederim! Sana iyi şanslar!

 
warlock писал(а) >>

Yardım!!! EA, yeni bir mumun açılışında alım satımlar açmalıdır, ancak mumun başında açmaya ek olarak, "sol" olanları da düzensiz bir şekilde açar...

Artı, Yüksek ve Düşük'ü atadıktan sonra satın almayı bıraktım ... ama sadece satıyor ...

Ve OrderSend() içinde ne olduğuna dikkatlice bakmak kader değildir. Biri yanlışlıkla çöküyor, diğeri çalışıyor

 if ( AllowBUY ) 
   tick = OrderSend ( Symbol ( ) , OP_SELLSTOP , Lot , price1 , 3 , ( price1 - SL * Point ) * loss , ( price1 - TP * Point ) * profit , "scriptSELLstop" , CLR_NONE , expiration ) ;
if ( AllowSELL ) 
   tick = OrderSend ( Symbol ( ) , OP_SELLSTOP , Lot , price2 , 3 , ( price2 + SL * Point ) * loss , ( price2 - TP * Point ) * profit , "scriptSELLstop" , CLR_NONE , expiration ) ;
 
warlock >> :

Yardım!!! EA, yeni bir mumun açılışında alım satımlar açmalıdır, ancak mumun başında açmaya ek olarak, "sol" olanları da düzensiz bir şekilde açar...

Artı, Yüksek ve Düşük'ü atadıktan sonra satın almayı bıraktım ... ama sadece satıyor ...

Teşekkür ederim ... Bir saat oturdum ... Ne olduğunu anlayamadım ... bazen birinin yaptığı hatalara gözlerini açması gerekiyor ...

 
Merhaba arkadaşlar, AC göstergesi hakkında bir danışman yazarken kimse yardımcı olamaz mı?