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

 

Göstergenin akımı değil, son Per çubuklarının maksimum değerini nasıl göstereceğini söyle, bunu bir osma örneğini kullanarak yaptım, ancak kod test cihazındaki akımı gösteriyor, grafik hareket ediyor ve sadece grafiğe atın, sonra hiçbir şey:

 //---- indicator settings
#property   indicator_separate_window
#property   indicator_buffers 1
#property   indicator_color1  Silver
#property   indicator_width1   2
//---- indicator parameters

extern int Per= 12 ;
extern int FastEMA= 12 ;
extern int SlowEMA= 26 ;
extern int SignalSMA= 9 ;
//---- indicator buffers
double      OsmaBuffer1[];
double      OsmaBuffer[];
double      MacdBuffer[];
double      SignalBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- 2 additional buffers are used for counting.
   IndicatorBuffers( 4 );
//---- drawing settings
   SetIndexStyle( 0 , DRAW_HISTOGRAM );
   SetIndexDrawBegin( 0 ,SignalSMA);
   IndicatorDigits( Digits + 2 );
//---- 3 indicator buffers mapping
   SetIndexBuffer ( 0 ,OsmaBuffer1);
   SetIndexBuffer ( 1 ,OsmaBuffer);
   SetIndexBuffer ( 2 ,MacdBuffer);
   SetIndexBuffer ( 3 ,SignalBuffer);
   
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName( "OsMA(" +FastEMA+ "," +SlowEMA+ "," +SignalSMA+ ")" );
//---- initialization done
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Moving Average of Oscillator                                     |
//+------------------------------------------------------------------+
int start()
  {
   
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;
   limit= Bars -counted_bars;
//---- macd counted in the 1-st additional buffer
   for ( int i= 0 ; i<limit; i++)
      MacdBuffer[i]= iMA ( NULL , 0 ,FastEMA, 0 , MODE_EMA , PRICE_CLOSE ,i)- iMA ( NULL , 0 ,SlowEMA, 0 , MODE_EMA , PRICE_CLOSE ,i);
//---- signal line counted in the 2-nd additional buffer
   for (i= 0 ; i<limit; i++)
      SignalBuffer[i]=iMAOnArray(MacdBuffer, Bars ,SignalSMA, 0 , MODE_SMA ,i);
//---- main loop
   for (i= 0 ; i<limit; i++)
      OsmaBuffer[i]=MacdBuffer[i]-SignalBuffer[i];
//---- done
   for (i= 0 ; i<limit; i++)
    {
     for ( int b= 0 ; b<Per; b++)
      {
       OsmaBuffer1[i] =OsmaBuffer[ ArrayMaximum (OsmaBuffer,Per,b)];
      }
    } 
   return ( 0 );
  }
Всё разобрался, перемудрил просто))), достаточно этого:
 for (i= 0 ; i<limit; i++)
    {
     OsmaBuffer1[i] = OsmaBuffer[ ArrayMaximum (OsmaBuffer,Per,i)];
    } 
 
borilunad :
Anlıyorum! Ama bu değişken ("verilen yayılma") nasıl programlanır?! Tabii ki, bir Spread değişkeni yapabilir ve test cihazında spread'i her değiştirdiğimde değiştirebilirim. Diyelim ki Spread(TestGenerator) veya bir tür fonksiyon var veya bir şekilde böyle bir fonksiyon yapabilirsiniz, yapamıyor olamazsınız! ANCAK?


Test ederken belirli bir yayılma var,

ancak çoğu DC'de değişkendir. Bir arzu var, bir şekilde test cihazında düşünün. Genel olarak, danışmanları en olumsuz koşullarda test edin. Yani, maksimum yayılma, açılış siparişlerinde olası gecikmeler vb.

 
Sepulca :


Test ederken belirli bir yayılma var,

ancak çoğu DC'de değişkendir. Bir arzu var, bir şekilde test cihazında düşünün. Genel olarak, danışmanları en olumsuz koşullarda test edin. Yani, maksimum yayılma, açılış siparişlerinde olası gecikmeler vb.

Evet, anlıyorum ve her şeyi yapıyorum! Sadece programda belirlediğim spread'i yansıtmak istedim, çünkü Ask, test cihazında sıklıkla bozuluyor, ardından Bid + spread ile bulun! MarketInfo test cihazında çalışmıyor konusuna bakın. ! O zaman ne olduğunu anlayacaksın! Orada sordu ve sessizlik! Bu nedenle, buraya taşıdım, burada size ve diğerlerine teşekkür ettiğim yanıt veriyorlar!
 
Meslektaşlar! lütfen danışmana hazır bir işlevi sokmaya yardım edin
 

İşte fonksiyon

bool isFlagHistoryPos(int mn=-1) {

tarihsaat t;

int gd = MarketInfo(Symbol(),MODE_DIGITS);

int i, j=-1, k=OrdersHistoryTotal();

for (i=0; i<k; i++) {

if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {

if (OrderSymbol()==Symbol()) {

if (OrderType()==OP_BUY || OrderType()==OP_SELL) {

if (mn<0 || OrderMagicNumber()==dk) {

if (t<SiparişKapatZamanı()) {

t=SiparişKapatZamanı();

j=i;

}

}

}

}

}

}

if(OrderSelect(j, SELECT_BY_POS,MODE_HISTORY)) {

double ocp=NormalizeDouble(OrderClosePrice(),gd);

double otp=NormalizeDouble(OrderTakeProfit(),gd);

if(MathAbs(ocp-otp)/Point<=TPpoint) return(true);

}

dönüş(yanlış);

Danışmanın kendisi ekte

/* Vinin tarafından derlendi */

 
borilunad :
Evet, anlıyorum ve her şeyi yapıyorum! Sadece programda belirlediğim spread'i yansıtmak istedim, çünkü Ask, test cihazında sıklıkla bozuluyor, ardından Bid + spread ile bulun! MarketInfo test cihazında çalışmıyor konusuna bakın. ! O zaman ne olduğunu anlayacaksın! Orada sordu ve sessizlik! Bu nedenle, buraya taşıdım, burada size ve diğerlerine teşekkür ettiğim yanıt veriyorlar!

Lanet olsun, Boris. Zaten yakın zamanda yazdım. Peki, danışmanda yüzen bir yayılma taklidi yapın. Değişken spread aralığında rasgele bir sayının teklife eklenmesini ve stoplarla açılmasını engelleyen nedir. Ve stop emriyle değil, değerle kapatın. Daha büyük bir statik yayılım ayarlamaktan daha zordur, ancak gerçekten ihtiyacınız varsa, onu tasvir edebilirsiniz. Aynı zamanda, test cihazında minimum yayılmayı ayarlayın.

Bu çok... bir düşünce dizisi.

 
artmedia70 :

Lanet olsun, Boris. Zaten yakın zamanda yazdım. Peki, danışmanda yüzen bir yayılma taklidi yapın. Teklife kayan spread aralığında rastgele bir sayı eklenmesini ve stoplarla açılmasını engelleyen nedir. Ve stop emriyle değil, değerle kapatın. Daha büyük bir statik yayılım ayarlamaktan daha zordur, ancak gerçekten ihtiyacınız varsa, onu tasvir edebilirsiniz. Aynı zamanda, test cihazında minimum yayılmayı ayarlayın.

Bu çok... bir düşünce dizisi.

Teşekkürler Artyom! Bu iyi anlamda daha akıllıca! Öyle yapacağım!
 

Sorunla ilgili yardım lütfen) Damaların kesişiminde çalışan bir danışman yazdım ama test etmeye çalıştığımda terminal bip sesi çıkarıyor ve hiçbir şeyi test etmiyor (Derleyici kodu beğeniyor. Nasıl yapabilirim? en azından bir şey göster?

 #property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net"


#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- indicator parameters
extern int RPeriod= 13 ;
extern int RPrice= PRICE_CLOSE ;
extern int RMethod= MODE_EMA ;
//для желтой
extern int YPeriod= 30 ;
extern int YPrice= PRICE_CLOSE ;
extern int YMethod= MODE_EMA ;
extern int Magic= 17051994 ;
//профит и лось
extern int TakeProfit= 150 ;
extern int StopLoss= 30 ;
extern double lot= 0.1 ;
double movingred,movingellow,SL,TP,movingred2,movingellow2;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
  
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
int kolpos= 0 ,pos;  
     movingred= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 1 );
     movingellow= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 1 );
     movingred2= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 2 );
     movingellow2= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 2 );
         
         for (pos= 0 ;pos < OrdersTotal ();pos++) //считаю ордера чтобы советник не трогал в ручную выставленные ордера
        {
         OrderSelect (pos,SELECT_BY_POS,MODE_TRADES);
             if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic )
            {
            kolpos++;
            }
        }
         if (kolpos== 0 )
         {
               //условвие для покупок продаж
               if (movingred2>movingellow2 && movingred<movingellow && Volume[ 0 ]< 5 ) //продаем 
                  {
                     OrderSend ( Symbol (),OP_SELL,lot,Bid, 10 ,Bid+StopLoss* Point ,Bid-TakeProfit* Point , NULL ,Magic, 0 ,Green);
                  }
               if (movingred2<movingellow2 && movingred>movingellow && Volume[ 0 ]< 5 ) //покупаем
                  {
                     OrderSend ( Symbol (),OP_BUY,lot,Ask, 10 ,Ask-StopLoss* Point ,Ask-TakeProfit* Point , NULL ,Magic, 0 ,Red);
                  }
          }
   return ( 0 );
  }
 
LBatters :

Sorunla ilgili yardım lütfen) Damaların kesişiminde çalışan bir danışman yazdım ama test etmeye çalıştığımda terminal bip sesi çıkarıyor ve hiçbir şeyi test etmiyor (Derleyici kodu beğeniyor. Nasıl yapabilirim? en azından bir şey göster?

Ne yazdığını hiç izledin mi?!

Bir şey bana "burada köpeğin altını üstüne getirdiğini" söylüyor:

     movingred= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 1 );
     movingellow= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 1 );
     movingred2= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 2 );
     movingellow2= iMA ( Symbol (), 0 ,RPeriod, 0 ,RMethod,RPrice, 2 );
 
LBatters :

Sorunla ilgili yardım lütfen) Damaların kesişiminde çalışan bir danışman yazdım ama test etmeye çalıştığımda terminal bip sesi çıkarıyor ve hiçbir şeyi test etmiyor (Derleyici kodu beğeniyor. Nasıl yapabilirim? en azından bir şey göster?

// считаю ордера чтобы советник не трогал в ручную выставленные ордера

Onlara nereye dokunacak? Evet ve sihri kontrol etmek yeterli, sihirsiz manuel olanlar.


Yukarıda da belirtildiği gibi, arabalar kesişmiyor ...