코딩하는 방법? - 페이지 210

 

정말 감사합니다!!! cockeydcowboy, 정말 멋졌다!!

이제 오류 메시지가 사라졌습니다!!

하지만 두 번째 표시기는 그려지지 않았으며 이유도 모르겠습니다.

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

 

두 번째 버퍼에는 계산 데이터가 없기 때문에 문제가 있습니다.

Buffer_Mom 의 모든 요소를 계산한 다음 Buffer_Ma 를 계산하십시오.

예시:

void start()

{

int counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

for(int i=0; i<limit; i++)

{

Buffer_Mom=iMomentum(NULL,Timeframe_Momentum,Periode_Momentum,PRICE_CLOSE,i);

}

for( i=0; i<limit; i++)

{

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

}

return(0);

}

행운을 빕니다.

 

특정 막대의 OHLC 찾기

누가 MQL 코드를 사용하여 특정 바의 종가를 찾는 방법을 알려줄 수 있습니까? 시간이 되면 바를 참조할 수 있습니까?

ie: Closing_price_of_bar = Close("04:59:00 AM") ... 그렇게 쉬웠다면!

고맙습니다

 

안녕하세요 여러분!

좋아, 또 다른 큰 문제가 있습니다 ...

이 조건을 코딩하는 방법:

처음에만 롱 또는 숏 입력

(따라서 긴 신호가 많은 경우 처음에만 입력하십시오)

나는 모든 사람들이 이것에 대해 나를 도울 수 있도록 지불 할 것입니다.

이것은 구매 조건에 대한 내 간단한 코드입니다.

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Sadly:
누가 MQL 코드를 사용하여 특정 바의 종가를 찾는 방법을 알려줄 수 있습니까? 시간이 되면 바를 참조할 수 있습니까?

ie: Closing_price_of_bar = Close("04:59:00 AM") ... 그렇게 쉬웠다면!

고맙습니다

이 시도:

close_price_of_bar = iClose (Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

 

구매 또는 판매

여러분, 안녕하세요,

EA 구매 및 EA 판매는 항상 두 개 이상의 포지션이 열려 있습니다. 하나의 계정에서 1(일) 매수 포지션과 1(일) 매도 포지션만 허용하는 코드를 변경하거나 수정하는 방법에 대해 도움을 받고 싶습니다.

SL과 TP는 목표 가격을 사용합니다. 즉, 매수 가격이 목표 가격에 도달하면 포지션을 청산합니다. 판매 가격과 동일합니다.

이 포럼의 코드 전문가들의 도움을 감사합니다.

고맙습니다.

=s21=

파일:
opensell.mq4  2 kb
 

구매 및 판매

이런...

EA 구매하기입니다.

파일:
openbuy.mq4  2 kb
 

안녕하세요, 하나의 주문만 열어야 하는 경우 다음 조건을 추가하면 됩니다. If (OrdersTotal()==0).

따라서 BUY 주문에 대한 규칙은 다음과 같습니다.

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

[/CODE]

So you will not get second-third-... orders opened until you current order open.

dr.house7:
hy folks !

ok i have another big problem...

how to code this condition :

enter long or short only first time

(so if i have many following long signal ea enter only at first time)

i'll pay everyone could help me on this

this is my simple code for buy condition:

[CODE]

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Roger09:
이것을 시도하십시오: closed_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

팹! 인터프리터가 오류에 대해 불평하는 것을 막기 위해 닫는 괄호 1개를 추가해야 했지만 훌륭하게 작동했습니다.

감사합니다, Roger09

 
Avalanche2k:
안녕하세요, 하나의 주문만 열어야 하는 경우 다음 조건을 추가하면 됩니다. If (OrdersTotal()==0).

따라서 BUY 주문에 대한 규칙은 다음과 같습니다.

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

따라서 현재 주문이 열릴 때까지 두 번째-세 번째-... 주문이 열리지 않습니다.

Avalanche님, 감사합니다.

그러나 그것은 나를 위한 해결책이 아닙니다. 왜냐하면 나는 TP를 가지고 있기 때문에 반대 조건이 될 때까지 기다리지 않습니다

다른 아이디어? 저에게 지불하겠습니다