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

 
hoz :

autopoint를 몇 번이나 사용했지만 처음에는 작동하지 않습니다.

다음 은 Init()입니다.

나는 프로그램의 어느 곳에서나 처방합니다 (이 경우 실험 시작시에도).

로그로 돌아갑니다.

논리는 어디에 있습니까?

VladislavVG는 다음과 같이 제안했습니다. init() 함수 실행 단계에서 금융 상품 데이터 다운로드가 보장되지 않기 때문입니다.
 
GaNDarM :
VladislavVG는 다음과 같이 제안했습니다. init() 함수 실행 단계에서 금융 상품 데이터 다운로드가 보장되지 않기 때문입니다.

따라서 Init() 이 없는 Point 변수의 값은 동일한 값을 반환해야 합니다.
 
hoz :
함수가 구체적으로 객체의 이름을 반환한다면 어디에서 넌센스가 있을까요?
이 기능이 항상 어디에서나 올바르게 작동하고, 어디에서나 결함이 발생하지 않으며, 복잡한 개체 이름에 질식하지 않을 것이라고 100% 확신하십니까? 아니면 아무 이유 없이 자신의 감독으로 갑자기 존재하지 않는 물체가 그 안에 들어 있습니까? 또한 함수에서 반환된 결과에 따라 제대로 작동했는지 여부를 판단할 수 없습니다. 그리고 문서에는 그렇게 나와 있습니다. 유일한 올바른 방법은 오류 코드 를 가져와서 거기에서 춤을 추는 것입니다. 따라서 자신(또는 다른 사람)의 실수에 대비하여 자신을 보장합니다.
 
hoz :

autopoint를 몇 번이나 사용했지만 처음에는 작동하지 않습니다.


논리는 어디에 있습니까?

그리고 다음과 같이 하려고 합니다.

 int init()
{
   if ( Digits == 2 || Digits == 4 )
     pt = MarketInfo( Symbol (), MODE_POINT);
   if ( Digits == 1 || Digits == 3 || Digits == 5 )
     pt = MarketInfo( Symbol (), MODE_POINT) * 10 ;
 
   return ( 0 );
}

이렇지는 않지만 이렇습니다.

 int init()
{
   int MyDigits = MarketInfo( Symbol (), MODE_DIGITS)
   if (MyDigits == 2 || MyDigits == 4 )
     pt = MarketInfo( Symbol (), MODE_POINT);
   if (MyDigits == 1 || MyDigits == 3 || MyDigits == 5 )
     pt = MarketInfo( Symbol (), MODE_POINT) * 10 ;
 
   return ( 0 );
}

DigitsPiont 와 마찬가지로 내부 변수이기 때문입니다.

그것이 작동하는 방식입니다 :)

 
hoz :

따라서 Init() 이 없는 Point 변수의 값은 동일한 값을 반환해야 합니다.

사실이 아닙니다... 포인트 는 MQL 프로세서의 내부 변수이며 업데이트하는 데 약간의 시간과 몇 가지 초기화 단계가 필요합니다. 이 모든 것은 원칙적으로 프로세서가 start() 함수를 호출하기 전에만 발생하며 init() 처리 단계에서는 프로세서의 내부 변수 값이 설정되지 않을 수 있습니다.
 
GaNDarM :


나는 이것에 대해 울고 있습니다.

다음은 로그입니다.

18:25:09 IndikatorZZ GBPJPY,매일: 초기화 기능 작동: DownL = 0 UpL = 0


혹시 변수가 int가 아니겠습니까?


그렇게 몇 번이나 낚였어

 
ilunga :

변수는 우연히 int가 아닙니까?


몇 번이나 그런 식으로 나를 잡았어


아니, 더블. 그리고 int는 그렇게 흥미롭지 않습니까?
 
안녕하세요! 상황은 전날 벌어졌다. 2013년 3월 19일 약 17:00 GMT에 보류 중인 판매 중지 주문을 주문했습니다. 시작 가격 1.2903, 손절매 1.2913, 추적 정지 15포인트, M15, 로트 -0.5. 계정 기록에서 알 수 있듯이 17-49에서 위치가 열렸습니다. 포지션은 21-15 GMT에서 마이너스 90의 이익으로 다시 마감되었습니다. 그 이야기를 보았을 때, 내 머리 속에는 많은 질문이 떠올랐다. 예를 들어, 왜 그 포지션이 스파이크의 상단에서 닫혔는지(그림 참조). 왜 후행 정지가 작동하지 않았습니까? 작동하면 이익이 양수이기 때문입니다. 가격 움직임이 정확하게 추측되었습니다. 후행 정지 후 정지 손실이 발생했어야 하며 손실은 90 USD가 아니어야 합니다. 그리고 나는 반복합니다 - 왜 포지션이 상승세의 상단에 닫혔는지. 포인트 투 포인트. 이 문제에서 거래 센터는 적용되지 않았습니다. 대부분 대답하지 않을 것입니다. 나는 이 포럼에 대해 기억했고 전문가들이 접근 가능한 언어로 이 이상 현상에 대한 이유를 설명할 수 있기를 바랍니다. 최근에 MT4를 통해 거래를 시작했습니다. 나는 여전히 킁킁거리며 자세히 들여다본다고 말할 수 있다.
 
안녕하세요. 한 어드바이저가 한 번에 여러 통화 쌍 창에 연결되어 있으면 한 창에서 어드바이저의 변경 사항이 다른 창의 어드바이저에 영향을 미치는지 알려주세요??? 저것들. 지역 변수 가 변경되거나 변경되지 않습니까???
 

주님, 말씀해 주십시오!

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

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

예를 들어, 배열에서 가장 가까운 값이 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 ); //ордер открыть
  }                                  

   }