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

 
deyron :
안녕하세요. 한 어드바이저가 한 번에 여러 통화 쌍 창에 연결되어 있으면 한 창에서 어드바이저의 변경 사항이 다른 창의 어드바이저에 영향을 미치는지 알려주세요??? 저것들. 지역 변수가 변경되거나 변경되지 않습니까???


동일한 Expert Advisor의 마법을 변경하면 Expert Advisors는 각각의 창에서 별도로 작동합니다.

 

조언자를 개조하는 데 도움이 매우 필요합니다!!!

모든 것이 나에게 적합하지만 하고 싶은 것뿐입니다. 손익분기점으로 거래를 양도하거나 테이크로 청산할 수 없는 경우 거래 전략을 변경하지 않고 반대의 새로운 개시 신호에서 청산하십시오. 예를 들어, 매도 거래가 있고 가격이 돌아서서 부엉이가 그것을 손익분기점으로 옮기지 않고 그는 롤백을 희망하여 로트가 증가한 새 양초에 매도 거래를 시작하지만, 나는 그가 손절매 로 이 거래를 마감한 것처럼 계속 일하기를 바랍니다.

/*디컴파일 제거*/

 
deyron :
안녕하세요. 한 어드바이저가 한 번에 여러 통화 쌍 창에 연결되어 있으면 한 창에서 어드바이저의 변경 사항이 다른 창의 어드바이저에 영향을 미치는지 알려주세요??? 저것들. 지역 변수가 변경되거나 변경되지 않습니까???
아니요, 서로 영향을 미치지 않습니다. 포지션의 동일한 마법은 어드바이저가 마법에 의해서만 포지션의 폐쇄를 결정할 때만 해로울 수 있습니다.
 

모두에게 좋은 하루. 전역 변수 를 이해하도록 도와주세요. 작업은 다음과 같습니다. bool line_1=false 변수가 있습니다. true로 변경됩니다. 가격에 도달하면 도달 시 다른 작업이 있을 달성 수준을 만들고 bool line_1 은 다시 false가 됩니다. 시스템을 다시 시작해야 하거나 금요일 저녁에 매개변수에 도달하지 않으면 이 변수의 값이 손실되고 물론 거래 결과에 영향을 미치므로 이해하는 대로 글로벌 부울로 만들어야 합니다. 변수. 나는 아직 이것을 접하지 못했고 코드를 올바르게 컴파일할 생각이 있는지 말해달라고 요청합니다. 수정해야 할 부분이 있으면 알려주세요. 감사합니다.

bool line_1=GlobalVariableGet(거짓);

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);}

이러한 방식으로 코드를 빌드하면 터미널이 다시 시작될 때 변수가 다시 시작할 때 이전 값을 그대로 둘 것인가 아니면 프로그램 시작 시 선언된 상태에서 0으로 재설정됩니까? 다시 한번 감사합니다!

 
paladin80 :
아니요, 서로 영향을 미치지 않습니다. 포지션의 동일한 마법은 어드바이저가 마법에 의해서만 포지션의 폐쇄를 결정할 때만 해로울 수 있습니다.

예, 물론 다르게 필터링할 수 있습니다. 예를 들어 캐릭터별 등 나는 가장 쉬운 방법을 말했다.
 
laveosa :

모두에게 좋은 하루. 전역 변수를 이해하도록 도와주세요. 작업은 다음과 같습니다. bool line_1=false 변수가 있습니다. true로 변경됩니다. 가격에 도달하면 도달 시 다른 작업이 있을 달성 수준을 만들고 bool line_1 은 다시 false가 됩니다. 시스템을 다시 시작해야 하거나 금요일 저녁에 매개변수에 도달하지 않으면 이 변수의 값이 손실되고 물론 거래 결과에 영향을 미치므로 이해하는 대로 글로벌 부울로 만들어야 합니다. 변수. 나는 아직 이것을 접하지 못했고 코드를 올바르게 컴파일할 생각이 있는지 말해달라고 요청합니다. 수정해야 할 부분이 있으면 알려주세요. 감사합니다.

bool line_1=GlobalVariableGet(거짓);

if(macd_2<0&&macd_1>0) {line_1=GlobalVariableSet(true);}

if(macd_2>0&&macd_1<0) {line_1=GlobalVariableSet(false);}

이러한 방식으로 코드를 빌드하면 터미널이 다시 시작될 때 변수가 다시 시작할 때 이전 값을 그대로 둘 것인가 아니면 프로그램 시작 시 선언된 상태에서 0으로 재설정됩니까? 다시 한번 감사합니다!

먼저 GlobalVariableSet() 에 대해 읽으십시오. 매개변수가 누락되어 잘못 사용하고 있습니다.

그리고 동작 순서는 다음과 같습니다. 저장하려는 변수의 값이 변경되면 이 값은 언급된 기능을 사용하여 터미널의 해당 전역 변수로 전달됩니다. 그리고 init()에서 어드바이저를 다시 초기화할 때 GlobalVariableGet() 함수를 사용하여 변수에 값을 전달합니다.

 

주님, 말씀해 주십시오!

나는 간단한 아이디어를 구현하려고 노력하고 있습니다.그것은 프로그램에 대한 주석에 명시되어 있습니다.

문제 테스터의 프로그램이 코드에 지정된 조건과 일치하지 않는 가격으로 주문을 엽니다.

예를 들어, 배열에서 가장 가까운 값이 0.85375인 동안 0.86084의 가격으로 주문을 엽니다.

저것들. 그 차이는 긍정적이다. 코드는 차이가 < 0.00000인 경우 주문을 열어야 함을 나타냅니다. 부정적인.


어디가 잘못되었는지 알려주세요.

고맙습니다.

 int start()
{
 double Price=iOpen ( Symbol (), 0 , 0 );        
 double SL= NormalizeDouble (Price- 3000 * Point , Digits );         
 double TP= NormalizeDouble (Price+ 100 * Point , Digits );    
 #include <MASSIV.mqh> //объявление массива типа double (неповторяющиеся значения цены с пятью знаками после точки)
 double value =  Bid ; //параметру value функции ArrayBsearch присваивается значение  цены последнего тика

 int S = ArrayBsearch (  massiv,  value, WHOLE_ARRAY ,   0 , MODE_ASCEND); //функция возвращает индекс значения цены макс. близкой к цене последнего тика 
 if ( ( NormalizeDouble (Bid-massiv[S], Digits ) <= 0 )) //если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000


{
                        
 OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 1 ,SL,TP, "jfh" , 123 ); //ордер открыть
 
solnce600 :

주님, 말씀해 주십시오!

나는 간단한 아이디어를 구현하려고 노력하고 있습니다.그것은 프로그램에 대한 주석에 명시되어 있습니다.

문제 테스터의 프로그램이 코드에 지정된 조건과 일치하지 않는 가격으로 주문을 엽니다.

예를 들어, 배열에서 가장 가까운 값이 0.85375인 동안 0.86084의 가격으로 주문을 엽니다.

저것들. 그 차이는 긍정적이다. 코드는 차이가 < 0.00000인 경우 주문을 열어야 함을 나타냅니다. 부정적인.

어디가 잘못되었는지 알려주세요.

고맙습니다.

오류를 찾는 방법: 아래에서 위로 각 줄을 살펴보고 얻고자 하는 것과 쓰여진 것 사이의 일치를 깨닫습니다.

 if (( NormalizeDouble (Bid-massiv[S], Digits ) <= 0 ))
//если разница между значением массива возвращенным на последнем тике и ценой последнего тика отрицательная или = 0.00000
이 조건은 다음을 가정합니다... - 그렇게 생각하셨나요??? (1 - 1000000 <= 0) - 만족???

나는 당신에게 해결책을 주었고 당신은 "지나갔습니다"...

 
TarasBY :

오류를 찾는 방법: 아래에서 위로 각 줄을 살펴보고 얻고자 하는 것과 쓰여진 것 사이의 일치를 깨닫습니다.

이 조건은 다음을 가정합니다... - 그렇게 생각하셨나요??? (1 - 1000000 <= 0) - 만족???

나는 당신에게 해결책을 주었고 당신은 "지나갔습니다"...

정말 감사합니다 지나치지 않았어요 님의 힌트도 베꼈어요 .... 제가 완전히 이해하지 못했을 뿐이에요 .... 어리석어서 죄송합니다 .... 이제 긴장을 풀겠습니다. 두뇌와 그것을 알아 내려고 노력하십시오.

왜 Vid 변수의 값(마지막 틱의 가격)을 1로 취하는지 이해가 되지 않습니다. 제 생각에는 이것은 첫 번째 ...

Massiv[S]도 제 생각에 6글자 뒤에 소수점이 있는 부분으로 구성되어 있는데 제가 잘못 알고 있는 부분을 알려주세요.

나는 당신의 코드를 주의 깊게 연구했습니다.

이중 ld_Delta = 10 * 포인트;
if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)//
이 가격은 새 막대 의 시작 가격입니다 .
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123);}// 주문 열기  


하지만 나는 이해하지 못했다

- 왜 Massiv[S] 변수 대신에 Price 변수를 사용하라고 제안 하는가? 결국, 그것은 마지막 막대의 시작 가격의 값을 포함합니다 .

결국, 내 주요 아이디어는 주문을 여는 필수 조건 중 하나가 시작 가격이 마지막 틱의 가격에 가장 가까운 배열 값 중 하나와 일치한다는 것입니다.

내 완전한 전략은 다음과 같습니다

2개의 조건이 동시에 실행될 때 OPEN ORDER

-마지막 캔들의 시가로

- 배열의 값 중 하나에 최대한 가까운 가격(배열의 값은 약 2000개의 반복되지 않는 입찰 가격 값이 무작위 순서로 진행됨)

나는 당신의 도움과 조언에 대해 매우 감사할 것입니다. 그렇지 않으면 나는 이틀 동안 내 머리를 긁적이며 ..... 그리고 아무 소용이 없습니다.


	          
 
solnce600 :

정말 감사합니다 지나치지 않았어요 님의 힌트도 베꼈어요 .... 제가 이해를 잘 못했을뿐입니다 .... 어리석어서 죄송합니다 .... 이제 긴장을 풀겠습니다 . 두뇌와 그것을 알아 내려고 노력하십시오.

왜 Vid 변수의 값(마지막 틱의 가격)을 1로 취하는지 이해가 되지 않습니다. 제 생각에는 이것은 첫 번째 ...

Massiv[S]도 제 생각에 6글자 뒤에 소수점이 있는 부분으로 구성되어 있는데 제가 잘못 알고 있는 부분을 알려주세요.

나는 당신의 코드를 주의 깊게 연구했습니다.

이중 ld_Delta = 10 * 포인트;
if (NormalizeDouble (MathAbs (Bid - Price), Digits) <= ld_Delta)//
이 가격은 새 막대의 시작 가격입니다.
{OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP,"jfh",123);}// 주문 열기  

그러나 나는 이해하지 못했다

- 왜 Massiv[S] 변수 대신에 Price 변수를 사용하라고 제안 하는가? 결국, 그것은 마지막 막대의 시작 가격 값을 포함합니다 .

결국, 내 주요 아이디어는 주문을 여는 필수 조건 중 하나가 시작 가격이 마지막 틱의 가격에 가장 가까운 배열 값 중 하나와 일치한다는 것입니다.

내 완전한 전략은 다음과 같습니다

2개의 조건이 동시에 실행될 때 OPEN ORDER

- 마지막 캔들의 시가로

- 배열의 값 중 하나에 최대한 가까운 가격(배열의 값은 약 2000개의 반복되지 않는 입찰 가격 값이 무작위 순서로 진행됨)

나는 당신의 도움과 조언에 대해 매우 감사할 것입니다. 그렇지 않으면 나는 이틀 동안 내 머리를 긁적이며 ..... 그리고 아무 소용이 없습니다.

무슨 일이 일어나고 있는지 이해하려면 계산을 인쇄해야 합니다.

     //если разница между значением массива возвращенным на последнем тике 
    // и ценой последнего тика отрицательная или = 0.00000
     if (( NormalizeDouble (Bid-massiv[S], Digits ) <= 0 ))
    {
         Print ( "massiv[" , S , "] = " , massiv[S], " | massiv[" , S - 1 , "] = " , massiv[S- 1 ], " | massiv[" , S + 1 , "] = " , massiv[S+ 1 ], " | Bid = " , Bid);
         OrderSend ( Symbol (),OP_BUY, 0.1 ,Ask, 1 ,SL,TP, "jfh" , 123 ); //ордер открыт
    }
그리고 결과를 분석합니다.