전문가를 위한 질문 - 페이지 12

 
rid писал(а) >>

저는 사실 이 문제에 있어서 멋진 전문가가 아닙니다.

그러나 첫 번째 신호를 실행한 후 플래그를 "매달"하면 그대로 두는 것으로 가정합니다.

1차 시그널이 이미 소진되어도!

그런 다음 두 번째 신호는 문제 없이 열라는 신호를 제공합니다.

제가 질문을 제대로 이해했다면...

그러나 결국 플래그는 변수이며, 새 틱으로 프로그램은 새 데이터를 기반으로 플래그의 초기 값 또는 계산된 값을 볼 수 있습니다. 플래그가 무엇인지 잘못 이해하고 있는 것은 아닐까?

 
MQLBankir >> :

그러나 결국 플래그는 변수이며, 새 틱으로 프로그램은 새 데이터를 기반으로 플래그의 초기 값 또는 계산된 값을 볼 수 있습니다. 플래그가 무엇인지 잘못 이해하고 있는 것은 아닐까?

플래그 - 값이 true(true) 또는 false(false)이고 숫자 표현이 각각 1 또는 0인 논리 상수입니다.

첫 번째 신호의 조건(옵션으로 2대 교차로)이면 플래그가 true로 설정되고 아직 교차로가 발생하지 않은 경우 플래그는 false로 설정됩니다. 귀하의 작업에 대해 ... 다음과 같습니다.

부울 신호1=참;

정수 시작()

if (signal1==false) {return();}

signal1 .......트라라라 수신 신호

if (signal1 ==true) // 첫 번째 신호가 나타났음을 의미

{

signal2 ...........트라라라 수신 신호

신호1=거짓;

}

글쎄, 그런 것이 있어야합니다)))

작성하는 동안에 대해 이미 아래에 정의됨)

 
MQLBankir >> :

그러나 결국 플래그는 변수이며, 새 틱으로 프로그램은 새 데이터를 기반으로 플래그의 초기 값 또는 계산된 값을 볼 수 있습니다. 플래그가 무엇인지 잘못 이해하고 있는 것은 아닐까?

잘못 설명되어 있지 않은 변수 유형 읽기

강제로 변경되거나 프로그램이 종료될 때까지.

 

플래그 보호는 다음과 같이 수행됩니다.

 int flag ;
int start ( )
{
 // функция принятия решения и установки флага
 if ( flag = = 1 )
   { flag = 0 ;
   // код защищенный от запуска флагом   
   } 
return ( 0 ) ;
}
그런데
 // функция принятия решения и установки флага

작가의 아이디어에 따라 행동 순서를 변경하면서 어디든지 있을 수 있습니다.

 
Urain писал(а) >>

플래그 보호는 다음과 같이 수행됩니다.

그런데

작가의 아이디어에 따라 행동 순서를 변경하면서 어디든지 있을 수 있습니다.

모두 감사합니다, 나는 그것을 알아 낸 것 같습니다 :)

 

좋은 저녁이에요. 어디선가 짜증이 났다.

마틴게일의 고문.

10단계. 각 단계에서 위치에는 자체 마술사가 있습니다.

처음에는 모든 것이 잘 작동했습니다. 여러 개의 날.

그러나 갑자기 모든 것이 작동을 멈췄습니다!

맨 처음 위치가 열리고 다음 막대에서 닫힙니다!

말도 안되게.


그리고 끝없이. 열리고 닫힙니다.

오늘에서야 시작되었습니다. 갑자기 !

포지션 클로징 블록은 다음과 같습니다.

 //жжжжжжжжжжжж  Закрытие позиций жжжжжжжжжжжжжжжжжжжжжжж
 //(используются ф-и И.Кима
if ( NumberOfPositions ( NULL , OP_BUY , - 1 ) > 0 ) { //если есть открытые позиции
// если цена открытия первой позиции меньше текущей цены на тейкпрофит - закрываем её 
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic  ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic  ) > 0 )  ClosePositions ( NULL , OP_BUY , Magic ) ;

// если цена открытия второй  позиции меньше текущей цены на тейкпрофит - закрываем её 
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_2 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_2 ) > 0 ) ClosePositions ( NULL , OP_BUY , Magic_2 ) ;

 // если цена открытия след.  позиции меньше текущей цены на тейкпрофит - закрываем всё открытые позиции  
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_3 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_3 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_4 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_4 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;    
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_5 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_5 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;   
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_6 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_6 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;    
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_7 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_7 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;   
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_8 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_8 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;    
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_9 ) + TakeProfit_Buy * Point ) < = Bid  & & PriceOpenLastPos ( NULL , OP_BUY , Magic_9 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;
if ( ( PriceOpenLastPos ( NULL , OP_BUY , Magic_10 ) + TakeProfit_Buy * Point ) < = Bid & & PriceOpenLastPos ( NULL , OP_BUY , Magic_10 ) > 0 ) ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ;  

 } 

어쩌면 누군가 - 즉석에서 부정확하거나 오류를 볼 수 있습니까? (어드바이저는 공개 가격으로 작동)

 

rid писал(а) >>

말도 안되게.

어쩌면 누군가 - 즉석에서 부정확하거나 오류를 볼 수 있습니까?

문제는 이 코드가 아니라 위치를 열거나 계산하는 데 있습니다. 이익을 취하십시오_구매. 두 번째일 가능성이 큽니다.

테스터에서 재현하면 Print가 도움이 될 것입니다.

 

TakeProfit_Buy를 계산하지 않습니다. 외부 매개변수에서 설정했을 뿐입니다.

extern int       TakeProfit_Buy=21;

테스터에서 - 같은 쓰레기지만 어떤 곳에서는. 처음에는 모든 것이 좋습니다.

그리고 이 짤이 등장합니다. 항상 그런 것은 아닙니다.

주석이나 인쇄물을 삽입하려면 ...

게다가. 지금 다른 계정(투자자)에서 - 동일한 DC의 동일한 어드바이저와 동일한 상품 및 TF가 잘 작동합니다!

 

ashel은 오류인 것 같습니다. 그리고 물론 처음에 내가 찾고 있던 곳은 전혀 아닙니다.

위의 클로저 외에도 다음이 있습니다.

 //----------------------- Закрытие позиций по текй профиту ----------------------------------

if ( NumberOfPositions ( NULL , OP_BUY , - 1 ) > 0 ) { // если есть открытые позиции
// если очередная  позиция закрылась по тейкпрофиту , то закрываем
// все остальные позиции  
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_3 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_4 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }    
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_5 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }   
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_6 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }    
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_7 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }   
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_8 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }    
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_9 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; }
if ( isCloseLastPosByTake ( NULL , OP_BUY , Magic_10 ) )  { ClosePosFirstProfit ( NULL , OP_BUY , - 1 ) ; } 
                                           }

함수 플래그가
isCloseLastPosByTake ( )//если поза закрылась по тейку - возвращает единицу
실행 후에는 = 1이지만 다른 모든 위치를 닫은 후에는 1과 동일하게 유지됩니다!그리고 물론 magic = magic_1로 다음 첫 번째 위치를 열 때 - 즉시 닫힙니다!

이 오류가 이틀 동안 나타나지 않은 이유가 명확하지 않습니까?

//------------------------------------------------ --------------

그리고 더. 알려주십시오. - 이 블록이 여전히 올바르게 작동하도록 하려면 어떻게 해야 합니까?

즉, 모든 위치를 닫은 후 isCloseLastPosByTake() 함수를 재설정하는 방법은 무엇입니까?

 
rid >> :

즉, 모든 위치를 닫은 후 isCloseLastPosByTake() 함수를 재설정하는 방법은 무엇입니까?

내가 아는 한, 이익으로 마감된 포지션은 나머지 소액 주문보다 더 긴 시간을 열어야 하고, 이 조건을 추가하면 모든 것이 시원해질 것입니다.