[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 702

 
keekkenen :

정적 정수 시간 = 시간[0];

if (시간 < 시간[0]){

// 오래된 촛불

} 또 다른 {

// 새 촛불

시간 = 시간[0];

}

이제 이전보다 2배 적은 거래가 있습니다.
 
TG :
이제 이전보다 2배 적은 거래가 있습니다.

새 막대를 확인하는 대신 초 단위로 설정하여 시작 사이에 일시 중지합니다.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}

다음과 같이 확인합니다(굵게 강조 표시됨, 주의를 기울이지 마십시오. / * PauseMain * / - 이것은 분 단위의 임의 지연 값입니다 - 5에서 9까지).

// Тут начало функции открытия позиций (открытие 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 ;            

맑아지길 바라며...

 
이러한 질문-전략 테스터에서 비시각적 모드에서 그래픽 개체가 모델링되지 않는 것으로 나타났습니까? 예를 들어, OBJ_REGRESSION 채널이 깨졌을 때 거래를 여는 코드를 테스트했습니다. 이 채널을 끄면 시각적 모드에서 거래됩니다. 거래가 없습니다... 이 경우 최적화하는 방법은 무엇입니까?
 
ToLik_SRGV :

코드를 약간 수정한 Boris는 원래 로트로 돌아갈 때 어레이 위치 재설정을 추가하는 것을 잊었습니다.


매우 감사합니다! 모든 것이 해결되었습니다. 잘 어울리고 적당량을 넣어줍니다!!!
 
히스토그램 막대의 두께를 설정하기 위해 무엇을 수행하고 변경해야 하는지 또는 코드에 무엇을 추가해야 하는지 알려주세요 ??
 
odiseif :
히스토그램 막대의 두께를 설정하기 위해 무엇을 수행하고 변경해야 하는지 또는 코드에 무엇을 추가해야 하는지 알려주세요 ??

표시기 설정 에서 - 선 종류, 색상 및 두께/너비
 
IgorM :

표시기 설정에서 - 선 종류, 색상 및 두께/너비
SetIndexStyle(0, DRAW_NONE);
SetIndexStyle(1,DRAW_LINE,EMPTY);
SetIndexStyle(2, DRAW_NONE);
SetIndexStyle(3, DRAW_NONE);
SetIndexStyle(4, DRAW_NONE);
여기는 내꺼야........ 칠면조에 선 굵기가 0이고 매번 설정으로 고생하지 않도록 굵기를 2로 설정하고 싶은데...... 나는 이것을 하는 방법을 모른다 .... 나는 프로그래머가 아니다 .... 좋은 사람들을 도우라))))
 

나는 프로그래밍을 전혀 이해하지 못한다. CCI 필터(https://www.forex-tsd.com/indicators-metatrader-4/3356-cci-filter.html)에서 동일한 작업을 수행하고 싶었습니다. WPR의 경우에만 코드의 모든 곳에서 CCI를 WPR로 교체했습니다. , 그리고 막대 색상 측면에서 레벨이 변경되었습니다(CCI의 경우 -100, 0, 100이 아니라 -60, -50 및 -40, MT WPR에서 -100에서 0 사이의 범위가 있는 것으로 보이므로 맞습니까?) ?). 그러나 어떤 이유로 오류와 함께 컴파일되고 화면에 칠면조가 한 가지 색상으로 나옵니다. 뭐가 문제 야? 미리 감사합니다

 #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 :

지옥의 기억)

어떤 화폐인지 알고싶어서 변수를 등록했습니다

문자열 EUR = "EURUSD";
문자열 GBP="GBPUSD";

문자열 기호 = "";

처음에는 다음을 씁니다.

기호 = 기호(); // 주어진 심볼의 값을 얻는다

받은 symbl 값을 내 변수 값과 비교하고 싶습니다. 일치하면 이에 따라 결정을 내립니다.

스위치(기호) {

케이스 ........... 그리고 아무것도 나오지 않습니다 (( break;

케이스 ........... 깨다;

}

기억을 새로 고침))

기호 상수만 사용할 수 있다는 사실에 사로잡혔지만 어떻게 해야 할까요?


 
Infinity :

지옥의 기억)

어떤 화폐인지 알고싶어서 변수를 등록했습니다

문자열 EUR = "EURUSD";
문자열 GBP="GBPUSD";

문자열 기호 = "";

처음에는 다음을 씁니다.

기호 = 기호(); // 주어진 심볼의 값을 얻는다

받은 symbl 값을 내 변수 값과 비교하고 싶습니다. 일치하면 이에 따라 결정을 내립니다.

스위치(기호) {

케이스 ........... 그리고 아무것도 나오지 않습니다 (( break;

케이스 ........... 깨다;

}

기억을 새로 고침))


스위치 문서는 괄호 안의 표현, 즉 symbl은 정수 유형이어야 하며 전단력을 ...