포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 614

 
yan720 :
응답해 주셔서 감사합니다. 어렵지 않다면, 당신이 이야기하고 있는 고문(또는 그 중 일부, 채널과 함께)을 보내주세요. 다른 구현을 보는 것도 흥미롭습니다.

내가 몇 년 전에 무엇을 만들었는지 이해할 수 없습니다. 일하고 장사했던 기억이 나지만 어째서인지 작동이 되지 않습니다. 먼저 코드를 이해하고 수정한 다음 제출하겠습니다. 아마도 내일. 갑자기 유치한 실수가 있다고 해서 불명예를 당하는 것은 아닙니다.

 
yan720 :

물론 일반적인 생각은 이렇습니다. 그리고 채널 너비(귀하의 경우 범위)를 결정하는 방법은 무엇입니까? 저에게 이것은 평균 양초의 크기를 통해 이루어지며 채널의 존재는 고정된 수의 막대가 아니라 예를 들어 10~30바.

길이에서 너비를 선택하는 문제에 관심이 있습니다 ...

한 칠면조에서 채널 너비에 대해 여러 외부 매개변수를 만들 수 있습니다. 그리고 각 매개변수에 대해 별도의 계산을 수행합니다.

 

길이도 마찬가지입니다.

 
Example2 :
안녕하세요. 바스켓 어드바이저는 조건이 발생하면 모든 주문을 닫아야 하지만 먼저 주문을 닫은 다음 다시 닫기를 시도합니다(서버에서 "잘못된 티켓" 오류 발생). 그런 다음 계속 진행합니다. 다음은 예제 코드와 어드바이저 자체입니다.

CloseOrders() 함수에서 주문이 닫히면 while( cnt<= 5 ) 루프가 다시 한 번 코드에서 주문을 닫도록 지시하고 자연스럽게 오류가 발생하고 if().. break를 통해 종료됩니다 .

                    int cnt= 0 ;
                     while (cnt<= 5 ){
                      Result[ 0 ]=OrderClose(OrderTicket(),OrderLots(),MarketInfo( "USDCAD" ,MODE_BID),slip,Blue);
                       if (!Result[ 0 ]){
                        Answer=ERRORS( GetLastError ());
                         if (Answer== 1 ) continue ; cnt++;
                         if (Answer== 2 ) break ;
                      }
                    }

ProtectionClose() 함수에서 while 에서 올바른 종료가 있는 행을 이미 추가 했습니다.

 if (Result[ 0 ]) break ;
 } continue ;
여기에서 파헤쳐보십시오.
 
pu6ka :

CloseOrders() 함수에서 주문이 닫히면 while( cnt<= 5 ) 루프가 다시 한 번 코드에서 주문을 닫도록 지시하고 자연스럽게 오류가 발생하고 if().. break를 통해 종료됩니다 .

ProtectionClose() 함수에서 while 에서 올바른 종료가 있는 행을 이미 추가했습니다.

여기에서 파헤쳐보십시오.


그러나 내가 설명한 경우 주문을 닫는 것은 ProtectionClose() 함수이며, 이것이 바로 캐치입니다. 그리고 나는 그 실수를 고칠 것이다.
 
Example2 :

그러나 내가 설명한 경우 주문을 닫는 것은 ProtectionClose() 함수이며, 이것이 바로 캐치입니다. 그리고 나는 그 실수를 고칠 것이다.

코드를 깊이 파고 들지 않았고 테스터에서 실행할 수 없으며 표시기가 없습니다.

그러나 예를 들어 OpenUsdbuy(); OpenSellusd()가 연속으로 있습니다.

OpenSellusd()는 GBPUSD, EURUSD, AUDUSD, NZDUSD 등을 엽니다. NZDUSD, AUDUSD 등을 역순으로 청산하는 첫 번째 사람입니다.

귀하가 게시한 코드에서 ProtectionClose() 함수에는 USDCAD, USDCHF, USDJPY의 두 가지 옵션이 있는 동안 세 쌍에만 출구가 있습니다.

다른 통화에서 while()은 if(!Result[..]) 오류에 의해서만 종료될 수 있습니다.

 
FOReignEXchange :

한 칠면조에서 채널 너비에 대해 여러 외부 매개변수를 만들 수 있습니다. 그리고 각 매개변수에 대해 별도의 계산을 수행합니다.

문제는 내가 채널의 폭을 강요하고 싶지 않다는 것입니다. EA/지표는 통화 쌍 및/또는 현재 변동성에 관계없이 채널의 존재를 결정해야 합니다. 따라서 외부 매개 변수에서 채널의 최소 및 최대 길이만 설정하고 알고리즘을 디버깅하는 과정에서만 이러한 매개 변수를 내부에 재봉합니다. 이 단계에서 몇 가지 불만 사항이 있습니다. 그리고 일반적으로 채널이 잡혀 있지만(그림은 작업 코드에서 가져온 것임) 이 문제에 대한 다른 솔루션을 보고 싶습니다.

 
pu6ka :

코드를 깊이 파고 들지 않았고 테스터에서 실행할 수 없으며 표시기가 없습니다.

그러나 예를 들어 OpenUsdbuy(); OpenSellusd()가 연속으로 있습니다.

OpenSellusd()는 GBPUSD, EURUSD, AUDUSD, NZDUSD 등을 엽니다. NZDUSD, AUDUSD 등을 역순으로 청산하는 첫 번째 사람입니다.

귀하가 게시한 코드에서 ProtectionClose() 함수에는 USDCAD, USDCHF, USDJPY의 두 가지 옵션이 있는 동안 세 쌍에만 출구가 있습니다.

다른 통화에서 while()은 if(!Result[..]) 오류에 의해서만 종료될 수 있습니다.


힌트를 주셔서 감사합니다. 루프에서 종료하는 것을 잊어버렸습니다. 이제 확실히 작동해야 합니다. 원하는 경우 감사 표시로 표시기를 배치할 수 있습니다.
 
yan720 :

물론 일반적인 생각은 이렇습니다. 그리고 채널 너비(귀하의 경우 범위)를 결정하는 방법은 무엇입니까? 저에게 이것은 평균 양초의 크기를 통해 이루어지며 채널의 존재는 엄격한 막대 수가 아니라 를 들어 10 ~ 30 바 .

길이에서 너비를 선택하는 문제에 관심이 있습니다 ...

이 10바의 길이가 기본 수치입니다. 즉, 적어도 10 ... 그리고 그 이상이면 그러한 운명입니다. 실험할 기회를 갖도록 이것을 밖으로 꺼내십시오. 내가 범위라고 부르는 것은 양초의 평균 크기로 두는 것이 중요하지 않지만 외부에 두는 것이 좋습니다. 아마도 최대 cf를 할당하고 싶을 것입니다. 크기와 최소값을 사용하려면 두 개의 변수 Max_ 및 Min_을 설정해야 합니다. 그런 다음 각 막대에서 이 10개 막대의 평균 캔들 크기를 확인하고 적합하면 10개 막대의 위아래에 추세선을 그립니다. 그리고 다음 바에서는 이미 11개의 바를 확인할 수 있으며, 조건을 위반하지 않으면 ObjectSet(...); 첫 번째 좌표의 경우 OBJPROP_PRICE1만 변경되고 두 번째 좌표의 경우 OBJPROP_PRICE2 OBJPROP_TIME2가 변경 되는 식으로 각 막대에 대해 변경됩니다. 또는 이미 형성된 채널을 고려하여 아무 것도 다시 계산할 수 없으며 이 채널이 고장날 때까지 기다리십시오. 이미 선택 사항입니다.

음, 제 경우에는 채널 높이와 최소 바 수를 같은 방식으로 설정하기 위해 경량 버전의 랜턴을 제안했습니다.


yan720 :

문제는 내가 채널 의 폭을 강요하고 싶지 않다는 것입니다. EA/지표는 통화 쌍 및/또는 현재 변동성에 관계없이 채널의 존재를 결정해야 합니다. 따라서 외부 매개 변수에서 채널의 최소 및 최대 길이 만 설정하고 알고리즘을 디버깅하는 과정에서만 이러한 매개 변수가 내부에 재봉됩니다 . 이 단계에서 몇 가지 불만 사항이 있습니다. 그리고 일반적으로 채널이 잡혀 있지만(그림은 작업 코드에서 가져온 것임) 이 문제에 대한 다른 솔루션을 보고 싶습니다.

음, 첫째, 매개 변수가 외부에 있거나 내부에 수 놓은 사실과 차이가 없습니다. 두 번째로, 채널 너비를 설정하지 않으면 지정한 10개 막대에 대해 계산한 값을 무엇과 비교할 것입니까? 채널이 채널인지 아닌지 어떻게 결정하시겠습니까? 그리고 셋째, IMHO, 양초의 평균 크기가 적절하게 작동하지 않습니다. 이제 10개의 막대가 모두 강세이지만 평균 막대 크기가 대조 막대보다 크지 않은 경우입니다. 채널인지 아닌지 채널일 수도 있지만 기울어지기만 하면 도면에 따라 수평 채널을 분해합니다.
 
yan720 :

문제는 내가 채널의 폭을 강요하고 싶지 않다는 것입니다. EA/지표는 통화 쌍 및/또는 현재 변동성에 관계없이 채널의 존재를 결정해야 합니다. 따라서 외부 매개 변수에서 채널의 최소 및 최대 길이만 설정하고 알고리즘을 디버깅하는 과정에서만 이러한 매개 변수를 내부에 재봉합니다. 이 단계에서 몇 가지 불만 사항이 있습니다. 그리고 일반적으로 채널이 잡혀 있지만(그림은 작업 코드에서 가져온 것임) 이 문제에 대한 다른 솔루션을 보고 싶습니다.

글쎄, 예를 들어 5-10 개의 양초로 구성된 2 개의 상위 프랙탈 또는 2 개의 iHighest를 잡는 아이디어가 있습니다. 우리는 이 경우를 특정 범위에서 포착합니다. 이 피크의 값이 서로 가까우면 이 두 피크 사이에서 iLowest를 찾습니다. 이 모든 것을 하나의 사이클로 압축할 수 있습니다.

마찬가지로 두 개의 낮은 봉우리를 먼저 찾은 다음 그 사이의 높은 봉우리를 찾습니다.

이 발견된 봉우리에서 더 춤을 춥니다. 우선, 우리는 그것들에 레벨을 그립니다. 그런 다음 코드에서 더 깊이 생각하도록 가르칩니다.

이 옵션은 channel_width와 같은 외부 매개변수로부터 우리를 구할 것입니다.

좋든 싫든 적어도 길이에 대한 일부 매개변수는 필요하다고 생각합니다.