[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 132

 

하지만 EA에 코드가 하나 더 있습니다.

 int CloseMarket()
   {
     for ( int j= 0 ; j< OrdersTotal (); j++)
      {
       OrderSelect (j,SELECT_BY_POS,MODE_TRADES);
       if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==Magic && OrderType ()< 2 )
         {
          CloseOrder( OrderTicket (), OrderLots ());
          j--;
         }
      }
   } 
 
alex12 :

하지만 EA에 코드가 하나 더 있습니다.

예를 들어 설정 인쇄 ("Close by CloseMarket ", j); 이 기능과 이전에 게시한 것과 유사한 것입니다. 이 인쇄 결과에 대한 로그를 실행하고 보고 어떤 것이 작동하는지 분석하십시오. 그런 다음 마찬가지로 닫는 조건에서 확인한 변수의 값을 로그에 출력하고 작동 이유를 찾으십시오 ...

 
alsu :
그리고 당신이 그릴 필요가있는 창에 고문을 정확히 걸지 못하게하는 것은 무엇입니까?


My Expert Advisor는 M1에서 더 잘 작동하고 M5에서 바가 열릴 때 1 거래를 시작하고 조건이 허용하는 경우 충전하기 때문에 M1에서 더 잘 작동합니다. 그리고 나는 M5와 다른 TF에 표시기를 사용합니다. 그리고 바를 열 때 M1에서 테스트하는 것이 더 좋지만 모든 틱이 있는 다른 TF에서는 테스트가 나쁩니다.

나는 그림을 그리지 않지만 고문이 만든 계산 결과와 모든 것이 순서대로 있는지 확인하기 위해 주석에 표시되는 결과만 봅니다. 관심과 도움을 주셔서 감사합니다!

 
borilunad :


My Expert Advisor는 M1에서 더 잘 작동하고 M5에서 바가 열릴 때 1 거래를 시작하고 조건이 허용하는 경우 충전하기 때문에 M1에서 더 잘 작동합니다. 그리고 나는 M5와 다른 TF에 표시기를 사용합니다. 그리고 바를 열 때 M1에서 테스트하는 것이 더 좋지만 모든 틱이 있는 다른 TF에서는 테스트가 나쁩니다.

나는 그림을 그리지 않지만 고문이 만든 계산 결과와 모든 것이 순서대로 있는지 확인하기 위해 주석에 표시되는 결과만 봅니다. 관심과 도움을 주셔서 감사합니다!

틱은 M1과 M5 모두에서 동일한 소스에서 가져오며 모든 차트의 모든 시간대에서 작업할 수 있습니다. Close[]를 iClose로 바꾸면 됩니다. 더 나은 테스트를 위해서는 틱에서 더 나은 품질의 fxt 파일을 만들어야 합니다. 예 는 여기 에 있지만 일반적으로 Google에는 이에 대한 정보가 있습니다.
 
alsu :
틱은 M1과 M5 모두에서 동일한 소스에서 가져오며 모든 차트의 모든 시간대에서 작업할 수 있습니다. Close[]를 iClose로 바꾸면 됩니다. 더 나은 테스트를 위해서는 틱에서 더 나은 품질의 fxt 파일을 만들어야 합니다. 예 는 여기 에 있지만 일반적으로 Google에는 이에 대한 정보가 있습니다.

실습에 따르면 Open에서 열고 테스트하는 것이 진드기보다 더 나은 것으로 나타났습니다. 그리고 나는 틱에 전혀 관심이 없습니다. 디포가 허용하는 경우 이전 TF로 전환할 수 있습니다. 그러면 하루 안에 더 잘 표시됩니다. 나는 편히 잠들기 위해 밤에 거래를 하지 않는다. 다시 한번 감사합니다!
 
smshev :

예를 들어 설정합니다. Print("close by CloseMarket ", j); 이 기능과 이전에 게시한 것과 유사한 것입니다. 이 인쇄 결과에 대한 로그를 실행하고 보고 어떤 것이 작동하는지 분석하십시오. 그런 다음 마찬가지로 닫는 조건에서 확인한 변수의 값을 로그에 출력하고 작동 이유를 찾으십시오 ...

고맙습니다.
 
borilunad :

실습에 따르면 Open에서 열고 테스트하는 것이 진드기보다 더 나은 것으로 나타났습니다. 그리고 나는 틱에 전혀 관심이 없습니다. 디포가 허용하는 경우 이전 TF로 전환할 수 있습니다. 그러면 하루 안에 더 잘 표시됩니다. 나는 편히 잠들기 위해 밤에 거래를 하지 않는다. 다시 한번 감사합니다!
이 얘기를 하는 게 아니라 전문가가 매달린 곳에 뭐가 다른 걸까? 올바르게 쓰여졌다면 어디에 매달렸는지는 중요하지 않습니다. 적어도 몽골 증권 거래소 차트에 걸어두십시오. 그러나 내부에서 1분 동안 유로달러로 작동하도록 설정되어 있으면 그렇게 할 것입니다. 프로그래밍하는 것은 전혀 어렵지 않습니다. 원칙적으로 몇 줄만 변경하면 됩니다.
 

친애하는 프로그래머! MACD 표시기 창의 최대 수치로 수평선을 그릴 수 없습니다 여기에서 이미 좋은 조언을 받았지만 MQL4 자습서에 따라 모든 것을 수행하지만 구현할 수 없습니다.

코드


#속성 표시기_분리_창
#속성 표시기_버퍼 3
#property indicator_color1 라임
#property indicator_color2 빨간색
//--- 버퍼
이중 ExtMapBuffer1[];
이중 ExtMapBuffer2[];
이중 topBuffer[];


bool initFinished=거짓; // 초기화 상태를 기억할 변수를 추가합니다.
// false - 아직 초기화되지 않음
// 사실 - 이전
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//---- 표시기
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexBuffer(2,topBuffer);
//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
리턴(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
int counted_bars=IndicatorCounted(),
한계;

if(counted_bars>0)
counted_bars--;

제한=막대 개수 계산된 막대기;
//----
for(int i=0;i<limit;i++)

{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);

if(초기화 완료==거짓)
{
IndicatorShortName("MACD_max-min");

int win_idx=WindowFind("MACD_max-min");
// 표시기의 하위 창 번호를 찾습니다.

if(win_idx<0)
{
// 서브 윈도우 번호가 -1이면 오류가 발생했습니다.
Print("창을 찾을 수 없습니다.");
리턴(0);
}

이중 상단 = WindowPriceMax(win_idx);
//현재 차트의 지정된 하위 창의 세로 눈금의 최대값을 찾습니다.


ObjectCreate("최대",OBJ_HLINE,win_idx,0,top);
// 표시기 하위 창에 수평선을 그립니다.

ObjectSet("최대",OBJPROP_COLOR,노란색);
ObjectSet("최대",OBJPROP_WIDTH,0);

창 다시 그리기();
// 라인을 보기 위해 창을 다시 그립니다.

initFinished=참;
// 그리기 완료

}

topBuffer[i]=상단;


}

//----
리턴(0);
}

//+----------------------------------------------- --------------------+


라인에 있는거같은데

이중 상단=WindowPriceMax(win_idx);

최상위 변수는 라인에서도 값을 얻지 못합니다.

ObjectCreate("최대",OBJ_HLINE,win_idx,0,top);

그 대신(즉, 최상위 변수 대신) 0(영)이 자동으로 설정됩니다. 그리고 원하는 창에서 원하는 색상을 얻지만 0 라인이 표시됩니다. TopBuffer[]도 비어 있습니다. 맨 위 변수 대신 이 줄에 숫자 값을 넣으면 이 줄은 이 고정 값을 사용합니다. 어딘가에 임상 오류가 있습니다. 알아낼 수 있도록 도와주세요! 미리 감사합니다.

파일:
 
IndicatorShortName은(는) init()로 이동해야 합니다.
 
alsu :
IndicatorShortName은(는) init()로 이동해야 합니다.
귀하의 버전에서는 표시기를 열면 개체가 나타나지 않습니다. 또한 표시기의 속성이 있는 창을 열고 닫아야 개체가 표시됩니다. 내 버전에서는 개체가 즉시 나타납니다. 표시기 가 호출될 때 이 구성은 개체 작업에 대해 이야기한 교육 예제에서 가져왔습니다.그러나 이 두 가지 옵션 모두 내 문제를 해결하지 못합니다! 여러분, 전문가 여러분, 다른 사람이 볼 수 있을까요?