Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 89

 
Omm :

söyle bana, vadeli işlemlerde günün saatini nasıl belirleyeceğim?

MarketInfo(Symbol(),MODE_STARTING)

MarketInfo(Symbol(),MODE_EXPIRATION)

sıfır üretir


hangi komisyoncu?

aslına bakarsanız komisyoncu ayarlayacaktır. bu yüzden yapılacak ilk şey ona işkence etmektir.

 
alexey1979621 :
Sevgili forum kullanıcıları! Expert Advisor'da fiyatın kanal çizgisini geçmesi koşulu nasıl belirlenir, örneğin fiyat kanal çizgisini yukarıdan geçer ve anlaşma açılır veya kapanır? Lütfen sizi ilgilendiren şeyin bu kavşak anı olduğunu unutmayın. Yardım için minnettar olurum.

double price0=NormalizeDouble(ObjectGetValueByShift("YourChannelLineName", 0),Rakamlar)); - çizginizin çubuktaki değeri 0'dır.

double price1=NormalizeDouble(ObjectGetValueByShift("YourChannelLineName", 1),Digits)); - 1. çubuktaki çizginizin değeri.

Sıfır çubuğunda kopma anını belirlemenin en basit yolu: if(High[0]>price0 && High[1]<=price1) {line is ayrılmış}, if(Low[0]<price0 && Low[ 1]>= fiyat1) {hat kırıldı}. ifs, kırılma anından mevcut çubuğun sonuna kadar TRUE olacaktır. Kanal hattınızın OBJPROP_RAY==True özelliğine sahip olması arzu edilir.

 
alexey1979621 :
Sevgili forum kullanıcıları! Expert Advisor'da fiyatın kanal çizgisini geçmesi koşulu nasıl belirlenir, örneğin fiyat kanal çizgisini yukarıdan geçer ve anlaşma açılır veya kapanır? Lütfen sizi ilgilendiren şeyin bu kavşak anı olduğunu unutmayın. Yardım için minnettar olurum.

Birkaç yol:

Sor > kanal hattı ve Düşük[1] <= kanal hattı ise, çapraz

Teklif < kanal hattı ve Yüksek[1] >= kanal hattı ise, o zaman çaprazlayın

1 periyot ile MA kullanılarak kontrol edilebilir

 
Programdaki son KAPALI siparişi nasıl seçip ondan bilgi alabilirim?
 
Yardımın için teşekkürler

. Muhtemelen soruyu yanlış gündeme getirdim, kodun bir kısmını eklemek gerekliydi. kendimi düzeltiyorum.

teklif ile

kapanışta artmedia70 geçişi böyle işaret etti. İşlem ekrana göre kapanır. Ama anlaşmanın çaprazın olduğu yerde kapatılması gerekiyor.

geçersiz CheckForClose()
{
çift FiyatYüksek, FiyatDüşük;
//---- sadece yeni çubuğun ilk tikleriyle işlem yap
if(Volume[0]>1) dönüş;

PriceHigh = iCustom(Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, TrendThreshold, Distances, 1, 0);
PriceLow = iCustom(Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);


for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) ara;
if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) devam ediyor;
//---- sipariş tipini kontrol et
if(OrderType()==OP_BUY)
{
if(Low[1]<=PriceHigh && Ask>=PriceHigh ) OrderClose(OrderTicket(),OrderLots(),Bid,3,Beyaz);
kırmak;
}
if(OrderType()==OP_SEL)
{
if(Yüksek[1]>=FiyatDüşük && Bid<=FiyatDüşük) OrderClose(OrderTicket(),OrderLots(),Ask,3,Beyaz);
kırmak;
}
}
//----
}

 
 
webip :
Programdaki son KAPALI siparişi nasıl seçip ondan bilgi alabilirim?

Kalbinin istediğini bul.
 
alexey1979621 :
Yardımın için teşekkürler

. Muhtemelen soruyu yanlış gündeme getirdim, kodun bir kısmını eklemek gerekliydi. kendimi düzeltiyorum.

teklif ile

kapanışta artmedia70 geçişi böyle işaret etti. İşlem ekrana göre kapanır. Ama anlaşmanın çaprazın olduğu yerde kapatılması gerekiyor.

geçersiz CheckForClose()
{
çift FiyatYüksek, FiyatDüşük;
//---- sadece yeni çubuğun ilk tikleriyle işlem yap
if(Volume[0]>1) dönüşü;

PriceHigh = iCustom(Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPperiod, Interpolate, TrendThreshold, Distances, 1, 0);
PriceLow = iCustom(Symbol(), 0, "ExtremeTMALine", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2, 0);


for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==yanlış) ara;
if(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) devam ediyor;
//---- sipariş tipini kontrol et
if(OrderType()==OP_BUY)
{
if(Low[1]<=PriceHigh && Ask>=PriceHigh ) OrderClose(OrderTicket(),OrderLots(),Bid,3,Beyaz);
kırmak;
}
if(OrderType()==OP_SEL)
{
if(Yüksek[1]>=FiyatDüşük && Bid<=FiyatDüşük) OrderClose(OrderTicket(),OrderLots(),Ask,3,Beyaz);
kırmak;
}
}
//----
}

ExtremeTMA - utanmadan yeniden çizin. Ve büyük bir tarih parçası - daha fazla değilse, son 30 bar. Bunun üzerine bir danışman yazdım - saçmalık. Hayal edin: bir sinyal çıktı, üzerine girdi ve bir süre sonra bu sinyal artık tarihte değil - hindi yeniden çizildi ve ortaya çıktı - boşuna girdiler

Kavşağı belirlerken bir hata yaptınız: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ... buna ihtiyacınız var if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... iyi, benzetme yoluyla tersi için.

PS Mesajınız için giriş penceresinin üst kısmındaki paneldeki SRC düğmesini kullanarak kodu girin

ZZY Peki, çarpı işareti olan ekran nerede?

 
artmedia70 :

ExtremeTMA - utanmadan yeniden çizin. Ve büyük bir tarih parçası - daha fazla değilse, son 30 bar. Bunun üzerine bir danışman yazdım - saçmalık. Hayal edin: bir sinyal çıktı, üzerine girdi ve bir süre sonra bu sinyal artık tarihte değil - hindi yeniden çizildi ve ortaya çıktı - boşuna girdiler

Kavşağı belirlerken bir hata yaptınız: if(Low[1]<=PriceHigh && Ask>=PriceHigh ) ... buna ihtiyacınız var if(Low[1]<=PriceHigh && Ask>PriceHigh ) ... iyi, benzetme yoluyla tersi için.

PS Mesajınız için giriş penceresinin üst kısmındaki paneldeki SRC düğmesini kullanarak kodu girin


Düzeltildi, anlaşma yukarıdaki ekrandakiyle aynı şekilde kapatıldı ama kırmızı çarpı nerede.

ExtremeTMA'nın yeniden çizildiğini kabul ediyorum, ancak bunun giriş noktası aramasını etkilemediğine inanıyorum, buradaki ana şey filtreler. TDI göstergesini kullandım. Hayal ettiğimi uygularım (hemen ellerimin eğri olduğunu söylerim, bu yüzden proje danışmanı ellerimle eşleşir). Bununla ilgili bir sorun var, test cihazında 1 yıldır 5 saat test ediliyor (bir yerde bir hata oluştu). Zor değilse, hataları arayın.

extern double   Lots             = 0.1 ;
extern string Сomment           = "TMA Canal2" ;
extern int TakeProfit           = 20 ;     //тейкпрофит (отрицательное число или ноль чтобы не использовать);
extern int StopLoss             = 20 ;     // уровень Stop Loss для покупки;
extern int Slippage             = 2 ; // проскальзывание 
extern int Magic                = 124 ;

extern string   Indi             = "ExtremeTMALine" ;
extern string TimeFrame         = "current time frame" ;
extern int     HalfLength        = 56 ;
extern int     Price             = PRICE_CLOSE ;
extern double ATRMultiplier     = 2.0 ;
extern int     ATRPeriod         = 100 ;
extern bool    Interpolate       = true ;
extern double TrendThreshold    = 0.5 ;
extern bool    Distances         = false ;


extern string   Indicatora       = "TradersDynamicIndex" ;
extern int RSI_Period           = 13 ;         //8-25
extern int RSI_Price            = MODE_CLOSE;           //0-6
extern int Volatility_Band      = 34 ;     //20-40
extern int RSI_Price_Line       = 2 ;      
extern int RSI_Price_Type       = MODE_SMA ;       //0-3
extern int Trade_Signal_Line    = 7 ;   
extern int Trade_Signal_Type    = MODE_SMA ;   //0-3
extern bool UseAlerts           = false ;

double PriceHigh, PriceLow, SL, TP, TDIHigh, TDILow, RSIPriceLine, TradeSignalLine;
int ticket;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
{
       if ( Digits == 3 || Digits == 3 ) // для пятизначного брокера
         {
            TakeProfit *= 10 ;
            StopLoss *= 10 ;
            Slippage *= 10 ;
         }
       return ( 0 );
}


//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders( string symbol)
  {
   int buys= 0 ,sells= 0 ;
//----
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ;
       if (OrderSymbol()== Symbol () && OrderMagicNumber()== 124 )
        {
         if (OrderType()==OP_BUY)  buys++;
         if (OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if (buys> 0 ) return (buys);
   else        return (-sells);
  }
   
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double PriceHigh, PriceLow, TDIHigh, TDILow, RSIPriceLine, TradeSignalLine;
   int ticket;

//---- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
   
   PriceHigh = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1 , 0 );
   PriceLow = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2 , 0 );
   TDIHigh = iCustom ( Symbol (), 0 , "TradersDynamicIndex" , RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 1 , 0 ); // голубая
   TDILow = iCustom ( Symbol (), 0 , "TradersDynamicIndex" , RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 3 , 0 ); // голубая 
   RSIPriceLine = iCustom ( Symbol (), 0 , "TradersDynamicIndex" , RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 4 , 0 ); // зеленая
   TradeSignalLine = iCustom ( Symbol (), 0 , "TradersDynamicIndex" , RSI_Period, RSI_Price, Volatility_Band, RSI_Price_Line, RSI_Price_Type, Trade_Signal_Line, Trade_Signal_Type,UseAlerts, 5 , 0 ); // красная
   
   
   if (Open[ 1 ]>PriceHigh || Close[ 1 ]>PriceHigh || High[ 1 ]>PriceHigh && Ask<=PriceHigh || Ask>=PriceHigh && TDIHigh > 68 && RSIPriceLine < TradeSignalLine)  

     {
      ticket= OrderSend ( Symbol (),OP_SELL,Lots,Bid, 3 , 0 , 0 , "TMA Canal2" , 124 , 0 ,Red);
       return ;
     }
//---- buy conditions
   if (Open[ 1 ]<PriceLow || Close[ 1 ]<PriceLow || Low[ 1 ]<PriceLow && Bid>=PriceLow || Bid<=PriceLow && TDILow < 32 && RSIPriceLine > TradeSignalLine)  

     {
      ticket= OrderSend ( Symbol (),OP_BUY,Lots,Ask, 3 , 0 , 0 , "TMA Canal2" , 124 , 0 ,Blue);
       return ;
     }
//----
  }

   //+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double PriceHigh, PriceLow;
//---- go trading only for first tiks of new bar
   if (Volume[ 0 ]> 1 ) return ;
 
   PriceHigh = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 1 , 0 ); 
   PriceLow = iCustom ( Symbol (), 0 , "ExtremeTMALine" , TimeFrame, HalfLength , Price, ATRMultiplier, ATRPeriod, Interpolate, TrendThreshold, Distances, 2 , 0 ); 
   
   
   for ( int i= 0 ;i< OrdersTotal ();i++)
     {
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false )         break ;
       if (OrderMagicNumber()!= 124 || OrderSymbol()!= Symbol ()) continue ;
       //---- check order type 
       if (OrderType()==OP_BUY)
        {
         if (Low[ 1 ]<=PriceHigh && Ask>PriceHigh) OrderClose(OrderTicket(),OrderLots(),Bid, 3 ,White);
         break ;
        }
       if (OrderType()==OP_SELL)
        {
         if (High[ 1 ]>=PriceLow && Bid<PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask, 3 ,White);
         break ;
        }
     }
//----
  }

//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
   {
//---- check for history and trading
   if ( Bars < 100 || IsTradeAllowed()== false ) return ;
//---- calculate open orders by current symbol
   if (CalculateCurrentOrders( Symbol ())== 0 ) CheckForOpen();
   else                                     CheckForClose();
//----
  }
 
alexey1979621 :

Düzeltildi, anlaşma yukarıdaki ekrandakiyle aynı şekilde kapatıldı ama kırmızı çarpı nerede.

ExtremeTMA'nın yeniden çizildiğini kabul ediyorum, ancak bunun giriş noktası aramasını etkilemediğine inanıyorum, buradaki ana şey filtreler. TDI göstergesini kullandım. Hayal ettiğimi uygularım (hemen ellerimin eğri olduğunu söylerim, bu yüzden proje danışmanı ellerimle eşleşir). Bununla ilgili bir sorun var, test cihazında 1 yıldır 5 saat test ediliyor (bir yerde bir hata oluştu). Zor değilse, hataları arayın.

Hatalar konusuna bakana kadar - birçok vaka var.

Kırmızı çarpının olduğu yerde Sat'ı kapatmak için mevcut çubuğu kontrol etmeniz gerekir. Eğer Sor<=yakın seviye && Yüksek[1]>kapat seviye