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

 
keekkenen :

statik int zaman = Zaman[0];

if (zaman < Zaman[0]){

// eski mum

} başka {

// yeni mum

zaman = Zaman[0];

}

Şimdi eskisinden iki kat daha az işlem var
 
TG :
Şimdi eskisinden iki kat daha az işlem var

Yeni bir çubuğu kontrol etmek yerine, saniye cinsinden ayarlanan açıklıklar arasında duraklamanız yeterlidir:

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает количество секунд после открытия последней позиций. |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
datetime SecondsAfterOpenLastPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   datetime t;
   int       i, k= OrdersTotal ();

   if (sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (OrderSymbol()==sy || sy== "" ) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
   return ( TimeCurrent ()-t);
}

Bunu şu şekilde kontrol ediyorum (kalın harflerle vurgulanmış, / * PauseMain * / - bu, dakika cinsinden rastgele bir gecikme değeridir - 5'ten 9'a kadar):

// Тут начало функции открытия позиций (открытие Buy)....

// Ниже код открытия Sell:        
          PauseMain51=random( 5 , 9 )*60;
         if (!Lot()) return ;                // Средств не хватает на миним.- выходим
         if (!OpnSell51 || !Trade) return ;
         if (ExistPositions( NULL , OP_SELL, 51 , 0 ))  // Если есть такой же открытый Sell
               {
                 if (SecondsAfterOpenLastPos( NULL , OP_SELL, 51 )<=/*PauseMain51*/ 7 * 60 ) return ; (7*60 сек = 7 минут)
                   // Если прошло мало времени - валим
               }
//---------------------- Позиции ещё нету - открываемся...-----------------------------
         divider= 1 ;
         Lots=GetSizeLot();
         Magic= 51 ;                                           // Задаём магик... 5 и 1; 5 = пять минут, 1 = стратегия 1
         New_Comm= "Sell_M5_Стратегия_1_Основная позиция" ;   // Задаём комментарий для позиции
         Lots_New=NormalizeLot(Lots/divider, False, NULL );
         OpenPosition( NULL ,OP_SELL,Lots_New, 0 ,pb-tp*po,Magic,New_Comm);

         return ;            

umarım netleşir...

 
Böyle bir soru - strateji test cihazında, görsel olmayan modda grafik nesnelerin modellenmediği ortaya çıktı mı? Örneğin, OBJ_REGRESSION kanalı bozulduğunda işlemleri açan kodu test ettim - görsel modda işlem görüyor, kapatırsam işlem yok - işlem yok... Bu durumda nasıl optimize edilir?
 
ToLik_SRGV :

Boris, kodda küçük bir düzeltme, orijinal partiye dönerken dizi konumunun bir sıfırlamasını eklemeyi unuttum:


ÇOK TEŞEKKÜRLER! Her şey yolunda gitti. İyi gidiyor ve doğru partileri koyuyor!!!
 
lütfen bana ne yapılması ve değiştirilmesi gerektiğini veya histogramın çubuklarının kalınlığını ayarlamak için koda ne eklenmesi gerektiğini söyleyin?
 
odiseif :
lütfen bana ne yapılması ve değiştirilmesi gerektiğini veya histogramın çubuklarının kalınlığını ayarlamak için koda ne eklenmesi gerektiğini söyleyin?

gösterge ayarlarında - çizgi tipi, renk ve kalınlık/genişlik
 
IgorM :

gösterge ayarlarında - çizgi tipi, renk ve kalınlık/genişlik
SetIndexStyle(0, DRAW_NONE);
SetIndexStyle(1,DRAW_LINE,BOŞ);
SetIndexStyle(2, DRAW_NONE);
SetIndexStyle(3, DRAW_NONE);
SetIndexStyle(4, DRAW_NONE);
burası benim ....... sadece türkiyede çizgi kalınlığım 0 ve kalınlıkları 2 olarak ayarlamak istiyorum her seferinde ayarlarla uğraşmamak için ...... ama Bunu nasıl yapacağımı bilmiyorum .... Programcı değilim .... iyi insanlara yardım et))))
 

Programlamadan hiç anlamıyorum. Aynısını CCI Filtresinden (https://www.forex-tsd.com/indicators-metatrader-4/3356-cci-filter.html) yapmak istedim, sadece WPR için, kodun her yerinde CCI'yi WPR ile değiştirdim , ve çubuk renklendirme açısından değişen seviyeler (CCI'de olduğu gibi -100, 0, 100 değil, -60, -50 ve -40, çünkü MT'de WPR -100 ila 0 aralığında görünüyor, doğru muyum? ?). Ama nedense bir hata ile derleniyor ve ekranda hindi tek renk çıkıyor. Sorun nedir? şimdiden teşekkürler

 #property copyright "Copyright © 2006, Forex-TSD.com "
#property link      "https://www.forex-tsd.com/"

#property indicator_separate_window
#property indicator_minimum - 0.05
#property indicator_maximum 1.05
#property indicator_buffers 4
#property indicator_color1 MediumBlue
#property indicator_color2 Crimson
#property indicator_color3 LightBlue
#property indicator_color4 Orange



//---- input parameters
extern int PeriodWPR= 18 ;
//---- indicator buffers
double UpBuffer1[];
double DnBuffer1[];
double UpBuffer2[];
double DnBuffer2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
  int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle( 0 , DRAW_HISTOGRAM , STYLE_SOLID , 2 );
   SetIndexStyle( 1 , DRAW_HISTOGRAM , STYLE_SOLID , 2 );
   SetIndexStyle( 2 , DRAW_HISTOGRAM , STYLE_SOLID , 2 );
   SetIndexStyle( 3 , DRAW_HISTOGRAM , STYLE_SOLID , 2 );
   
   SetIndexBuffer ( 0 ,UpBuffer1);
   SetIndexBuffer ( 1 ,DnBuffer1);
   SetIndexBuffer ( 2 ,UpBuffer2);
   SetIndexBuffer ( 3 ,DnBuffer2);
   
   IndicatorDigits(MarketInfo( Symbol (),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
   short_name= "WPR Filter(" +PeriodWPR+ ")" ;
   IndicatorShortName(short_name);
   SetIndexLabel( 0 , "UpTrend" );
   SetIndexLabel( 1 , "DownTrend" );
   SetIndexLabel( 2 , "Mild UpTrend" );
   SetIndexLabel( 3 , "Mild DownTrend" );
   
//----
   SetIndexDrawBegin( 0 ,PeriodWPR);
   SetIndexDrawBegin( 1 ,PeriodWPR);
   SetIndexDrawBegin( 2 ,PeriodWPR);
   SetIndexDrawBegin( 3 ,PeriodWPR);  
//----
   return ( 0 );
  }

//+------------------------------------------------------------------+
//| WPRFilter                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int shift,trend;
   double WPR0;

   
   for (shift= Bars -PeriodWPR- 1 ;shift>= 0 ;shift--)
   {    
   WPR0= iWPR ( NULL , 0 ,PeriodWPR, PRICE_CLOSE );
        
          if (WPR0>- 50 && WPR0<- 40 )  trend= 1 ;
          if (WPR0>- 40 )  trend= 2 ;  
          if (WPR0<- 50 && WPR0>- 60 ) trend=- 1 ;
          if (WPR0<- 60 )  trend=- 2 ;
          
          if (trend== 1 ) 
          {
          
          UpBuffer1[shift]= 0 ;
          UpBuffer2[shift]= 1 ;
          DnBuffer1[shift]= 0 ;
          DnBuffer2[shift]= 0 ;
          
          }
          if (trend== 2 ) 
          {
          
          UpBuffer1[shift]= 1 ;
          UpBuffer2[shift]= 0 ;
          DnBuffer1[shift]= 0 ;
          DnBuffer2[shift]= 0 ;
          
          }
          if (trend==- 1 ) 
          {
           
          UpBuffer1[shift]= 0 ;
          UpBuffer2[shift]= 0 ;
          DnBuffer1[shift]= 0 ;
          DnBuffer2[shift]= 1 ;
          }
          
          if (trend==- 2 ) 
          {
          
          UpBuffer1[shift]= 0 ;
          UpBuffer2[shift]= 0 ;
          DnBuffer1[shift]= 1 ;
          DnBuffer2[shift]= 0 ; 
          
          }
        }
        return ( 0 );      
 }
 
Infinity :

Cehenneme hafıza)

Ne tür bir para birimi bilmek istiyorum, değişkenleri kaydettim

dizi EUR="EURUSD";
string GBP="GBPUSD";

dizi sembolü = "";

başlangıçta şunu yazıyorum:

sembol = sembol(); // verilen karakterin değerini al

Alınan symbl değerini değişkenlerimin değerleriyle karşılaştırmak istiyorum, eğer eşleşirlerse buna bağlı olarak bir karar verin.

anahtar (sembol) {

durumda ......... ve sonra hiçbir şey çıkmaz (( break;

durum ................ ara;

}

hafızanızı tazeleyin))

Sadece sembolik bir sabit kullanabileceğinizi anladınız, ama o zaman nasıl olacak?


 
Infinity :

Cehenneme hafıza)

Ne tür bir para birimi bilmek istiyorum, değişkenleri kaydettim

dizi EUR="EURUSD";
string GBP="GBPUSD";

dizi sembolü = "";

başlangıçta şunu yazıyorum:

sembol = sembol(); // verilen karakterin değerini al

Alınan symbl değerini değişkenlerimin değerleriyle karşılaştırmak istiyorum, eğer eşleşirlerse buna bağlı olarak bir karar verin.

anahtar (sembol) {

durumda ......... ve sonra hiçbir şey çıkmaz (( break;

durum ................ ara;

}

hafızanızı tazeleyin))


Anahtar belgeleri, parantez içindeki ifadenin, yani. symbl bir tamsayı türünde olmalıdır ve kaymayı kaydırırsınız ...
Neden: