MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 197

 
Aleksandr Verkhozin :


외부 표시기로 작업하는 방법에 대한 비디오를 보고 테스터에서 버퍼 값을 보기 위해 작은 코드를 작성했습니다.

무효 OnTick()

{

이중 Buf1=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",0,1);

이중 Buf2=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",1,1);

이중 Buf3=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",2,1);

이중 Buf4=iCustom(NULL,0,"Shved-Supply-and-Demand-e600",3,1);

Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);

}

이미징 모드의 영역이 나타났다가 사라집니다. 그리고 버퍼의 값은 모두 동일하며 항상 0입니다. 코드에서 이러한 영역을 공식화하는 것이 정말 불가능합니까?

iCustom 외에 이러한 지표에 적합한 기능이 있습니까? 어쩌면 누군가가 비슷한 지표로 올빼미를 썼습니까?


표시기 버퍼 로는 방법이 없으며 프랙탈 값을 저장합니다.

표시기 속성 fractals_show = true; 차트에서 볼 수 있습니다

영역, 그래픽 개체 OBJ_RECTANGLE

다음을 사용하여 이러한 영역의 의미를 찾을 수 있습니다.


개체 가져오기

지정된 개체 속성의 값을 반환합니다.

이중 ObjectGet (
        object_name , // 객체 이름
    정수        인덱스          // 속성 식별자
);


루프에서 모든 개체를 살펴보고 필요한 개체와 경로를 찾습니다.

 int obj_total= ObjectsTotal (); 
   string name; 
   for ( int i= 0 ;i<obj_total;i++) 
    { 
     name = ObjectName (i);
     Print (i, " - объект " ,name); 
    }

대략 이렇습니다.

 
Artyom Trishkin :
알다시피, 바로 이 스레드에서 계산에 전달된 지표 값을 사용하는 트롤용 템플릿을 게시했습니다. 검색, 게으르지 마십시오.

열린 위치의 이익을 위해 올바른 후행이 필요합니다. 궁극적으로 1 또는 3 중 하나이며 단계 단계의 값, 즉 스톱-플립 시스템으로 연결됩니다. 따라서 복잡성과 그 반대의 경우도 있으므로 CalculateProfit() 함수를 사용하여 모든 주문을 추적하는 것이 더 쉽습니다. 이제 나는 이 주문 작업 방식에서 지표의 가치가 열린 포지션의 총 이익으로 후행과 연결될 수 있다는 것을 이해할 수 없습니다.
 
geratdc :

열린 위치의 이익을 위해 올바른 후행이 필요합니다. 궁극적으로 1 또는 3 중 하나이며 단계 단계의 값, 즉 스톱-플립 시스템으로 연결됩니다. 따라서 복잡성과 그 반대의 경우도 있으므로 CalculateProfit() 함수를 사용하여 모든 주문을 추적하는 것이 더 쉽습니다. 이제 나는 이 주문 작업 방식에서 지표의 가치가 열린 포지션의 총 이익으로 후행과 연결될 수 있다는 것을 이해할 수 없습니다.

표시기, 그 값은 결국 원하는 막대의 Mashki 값 일 수 있습니다. 포지션의 총 스톱을 이동하기 위해 계산된 가격 값을 후행으로 전달할 수 있습니다.

그러나 공개 포지션의 이익을 위해 어떤 종류의 흔적이 있는지, 정확히 무엇을 언제 추적하는지 명확하지 않습니다.

 
geratdc : 이익을 얻으려면 올바른 후행이 필요합니다.

모든 트레일 이 여기에 있습니다. TrailingFuncLib.mq4 파일에서 TrailingStairs - TRAILING STANDARD-STAGED 기능을 사용합니다. 각 주문은 독립적으로 추적됩니다.

 
Artyom Trishkin :

표시기, 그 값은 결국 원하는 막대의 Mashki 값 일 수 있습니다. 포지션의 총 스톱을 이동하기 위해 계산된 가격 값을 후행으로 전달할 수 있습니다.

그러나 공개 포지션의 이익을 위해 어떤 종류의 흔적이 있는지, 정확히 무엇을 언제 추적하는지 명확하지 않습니다.


원칙적으로 예, 평균 가격으로 한 번 트롤을 제안했습니다. 모든 것이 논리적으로 보이지만 평균 가격은 무엇을 의미합니까? (1주문 가격 + Step*Point + (2주문 가격 + Step*Point) + 3주문 가격) / 3 ? 즉, 많은 매개 변수가 있습니다. 열린 위치와 각 위치의 현재 가격을 호출해야 합니다. 예, 일반적으로 이 후행은 EA가 테스트에서 병합된다는 사실만큼 저를 괴롭히지 않습니다. 이것은 실생활에서 일어날 일입니다. 아니요, 설정할 수 있습니다. 그러나 다시 한 번, 통화 차트가 1주일 또는 1개월에 얼마만큼의 회전율을 보일지 알 수 없습니다. 이동 - 고문이 드로다운에서 병합됩니다. 따라서 보증금이 0으로 재설정되기 전에 드로다운 및 클로징 포지션 을 제한하는 것에 대해 생각해야 합니다. 요컨대, 나는 지금 Fox에 가장 관심이 있습니다))))
 

나는 그것에 대해 스스로 생각할 수 없으며 특정 정보도 찾지 못했습니다 ((이것의 본질은 가격 경계, 지표에 의해 구축 된 가장 가까운 영역을 코드에 표시하는 것입니다. 코드 작성을 시작했지만 제가 헷갈려서 제대로 하고 있는 건지 전혀 하고 있는 건지 모르겠는데, 보시고 진짜 길을 가르쳐주세요.

 int obj_total=ObjectsTotal();       

  string name; 

  for(int i=0;i<obj_total;i++)

  {

  name = ObjectName(i); 

  if(ObjectType(name)==OBJ_RECTANGLE)

  {

    pr1=ObjectGet(name,OBJPROP_PRICE1);// верхняя цена зоны

    pr2=ObjectGet(name,OBJPROP_PRICE2);// нижняя цена зоны

  }  

  }  

그리고 왜 내 코드가 원본과 같이 여기에 삽입되지 않아 여러 색상이 있고 선이 서로 옆에 있도록 합니까?
 
-Aleks- :

나는 그것을 알아 냈습니다 - 분명히 터미널에 충분한 메모리가 없었습니다 - 몇 개의 차트를 닫았고 작동했습니다.

감사합니다. 실제로 계산이 진행되고 있습니다.

그리고 변수가 int 유형이 아니라 bool 인 경우 어떻게 해야 합니까?


 //+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link        "http://vinin.ucoz.ru"
#property version    "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N= 162 ;   //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   for ( int n= 0 ;n<N;n++)
   {
       int tmp=n;
       int a=( int ) MathMod (tmp, 3 );
      tmp=(tmp-a)/ 3 ;
       int b=( int ) MathMod (tmp, 3 );
      tmp=(tmp-b)/ 3 ;
       bool c= ( bool ) MathMod (tmp, 2 );
      tmp=(tmp-c)/ 2 ;
       int d=tmp;
   
       Print ( "N=" ,n, "; A=" , 2 + 2 *a, "; B=" , b+ 1 , "; C=" ,c, "; D=" , 16 + 4 *d);
   }
  }
//+------------------------------------------------------------------+
 
Victor Nikolaev :

죄송하지만 이 코드가 이전 코드와 다른가요?
 
-Aleks- :

죄송하지만 이 코드가 이전 코드와 다른가요?


차이는 미미합니다. 변수 중 하나는 부울입니다.

출력에 true 또는 false가 표시됩니다.

 
Victor Nikolaev :


차이는 미미합니다. 변수 중 하나는 부울입니다.

출력에 true 또는 false가 표시됩니다.

게시한 마지막 코드를 확인하셨습니까? 그렇다면 휴식이 필요합니다... 감사합니다.
사유: