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

 

extern bool BUY = true;
extern int 매직 = 0;
외부 이중 로트 = 0.1;
extern int takeprofit = 0;
extern int 손절매 = 0;
extern int 미끄러짐 = 3;
이중 SL,TP;
정수(){
리턴(0);
}
정수 시작()
{
만약 (구매)
{
if (takeprofit!=0) TP = NormalizeDouble (Ask + takeprofit*Point,Digits); elseTP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); elseSL=0;
OPENORDER("구매");

구매=거짓;
}

리턴(0);
}
무효 OPENORDER(문자열 순서)
{
정수 오류;
동안 (사실)
{ 오류=참;
if (ord=="구매") error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0){BUY = false;}
}
반품;
}

 
nemo811 :

예를 들어 주십시오. 저는 배우는 중일 뿐이며 아직 플래그를 설정하는 작업에 직면하지 않았습니다. )
코드로 판단하면 주문을 열기 전에 한 곳에서 상태 확인이 있습니다. 변수를 false로 변경하기만 하면 됩니다. 다음 틱에서 프로그램은 이 블록에 들어가지 않고 어드바이저는 다시 시작할 때까지 다른 어떤 것도 열지 않을 것입니다.
 
nemo811 :

EA에서 조건의 단일 실행(예: 주문 열기)만 허용하고 각 틱으로 반복하지 않는 방법을 알려주십시오. 동시에 포지션을 청산할 때 어드바이저는 새로운 포지션을 개설해서는 안됩니다. 그려보려고 했는데 의도한 바가 나오지 않는다.

미리 감사드립니다.



오류 주문 티켓이 저장될 변수의 이름을 지정한 이유는 무엇입니까?

if (ord=="구매") error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0){BUY = false;}

OrderSend ()에 대해 읽고 질문이 저절로 제거될 것이라고 생각합니다. 저는 다음과 같이 작성할 것입니다.

 void OPENORDER( string ord)
{
int ticket = - 1 ;
 while (ticket< 0 )
 {ticket= OrderSend ( Symbol (),OP_BUY, Lot, NormalizeDouble (Ask, Digits ),slippage,SL,TP, "" ,Magic, 0 );
  sleep( 500 );
}
return ;
}
 
IgorM :



어쩌면 당신은 조금 더 일찍 읽었습니다. 나는 내 문제를 표명했습니다. 솔루션을 찾은 것 같지만 mql(

문자열에서 숫자를 하나씩 추출하는 방법은 무엇입니까?

 
NameLess :


어쩌면 당신은 조금 더 일찍 읽었습니다. 나는 내 문제를 표명했습니다. 솔루션을 찾은 것 같지만 mql에서 문자열로 작업하는 방법을 책에서 찾을 수 없습니다(

문자열에서 숫자를 하나씩 추출하는 방법은 무엇입니까?


MQL4 문자열 기능을 실험할 스크립트를 작성하십시오. https://docs.mql4.com/en/strings 를 참조하십시오.
 

예를 들어 어떤 규칙에 따라?

 
drknn :

MQL4 문자열 기능을 실험할 스크립트를 작성하십시오. https://docs.mql4.com/en/strings/StringSubstr 을 참조하십시오.

감사하다!
 
NameLess :


어쩌면 당신은 조금 더 일찍 읽었습니다. 나는 내 문제를 표명했습니다. 솔루션을 찾은 것 같지만 mql에서 문자열로 작업하는 방법을 책에서 찾을 수 없습니다(

문자열에서 숫자를 하나씩 추출하는 방법은 무엇입니까?

숫자를 문자열로 변환해야 합니다 https://docs.mql4.com/ru/convert/DoubleToStr

https://docs.mql4.com/en/strings/StringSubstr 처음부터 https://docs.mql4.com/en/strings/StringLen 문자열의 일부를 잘라야 합니다.

모든 것을 다시 실제 유형으로 변환합니다. https://docs.mql4.com/en/convert/StrToDouble

이것이 문자열 작업에 필요한 모든 기능입니다. 아마도 StrToDouble()만으로도 충분할 것입니다.

그러나 그러한 "추한 방법"에서는 숫자를 반올림하지 않고 확실히 잘릴 것입니다. 또 다른 옵션이 있습니다. 실수에 x의 거듭제곱을 곱하고 결과를 int 유형에 할당합니다. 실수하지 않으면 반올림도 발생하지 않으며 int를 x의 10으로 나눕니다.

 
IgorM :

숫자를 문자열로 변환해야 합니다 https://docs.mql4.com/ru/convert/DoubleToStr

https://docs.mql4.com/en/strings/StringSubstr 처음부터 https://docs.mql4.com/en/strings/StringLen 문자열의 일부를 잘라야 합니다.

모든 것을 다시 실제 유형으로 변환합니다. https://docs.mql4.com/en/convert/StrToDouble

이것이 문자열 작업에 필요한 모든 기능입니다. 아마도 StrToDouble()만으로도 충분할 것입니다.

그러나 그러한 "추한 방법"에서는 숫자를 반올림하지 않고 확실히 잘릴 것입니다. 또 다른 옵션이 있습니다. 실수에 x의 거듭제곱을 곱하고 결과를 int 유형에 할당합니다. 실수하지 않으면 반올림도 발생하지 않으며 int를 x의 10으로 나눕니다.


나는 적어도 *차단*해야 한다. 왜냐하면 숫자는 표시기에서 한 줄로만 가져온 것으로 판명되었습니다. 조언 감사합니다. 실험해 보겠습니다.)
 

IgorM :

무명:

도와 주셔서 감사합니다. 플래그를 설정하는 로직과 주문수 를 반환하는 기능을 이해했습니다. 하지만 주문이 마감되는 순간에도 관심이 있습니다. 플래그 조건이 다시 주문을 하려고 하는 것으로 나타났고, 반환 함수는 주문이 1개 적었다고 말하고 위치를 여는 것도 초기화합니다. 내가 놓친 것이 있으면 수정하십시오.
사유: