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

 

안녕 울프

wolfe:
나는 이것이 전에 다루어졌다는 것을 알고 있지만 누군가 막대당 1개의 거래만 허용하는 일부 코드를 보여줄 수 있습니까? 감사해요.

이것은 나를 위해 작동합니다.

날짜/시간 LastOpenTime=0;

/////////////////////////////////////////////

정수 주문;

for(int t=0;t<OrdersTotal();t++)

{

if(주문 선택(t, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumbers && OrderType() == OP_SELL)

{

if(OrderOpenTime()>LastOpenTime)LastOpenTime=OrderOpenTime();

}

}

}

그런 다음 내 코드에 붙입니다.

if(LastOpenTime0)

{ OrderSend(ㅋㅋㅋㅋ

시간[0]은 기간의 초의 시작이므로 올바른 기간을 선택해야 합니다.

 
waltini:
이것은 나를 위해 작동합니다.

날짜/시간 LastOpenTime=0;

/////////////////////////////////////////////

...........................

시간[0]은 기간의 초의 시작이므로 올바른 기간을 선택해야 합니다.

이것은 조금 더 간단할 수 있습니다.

datetime LastOpenTime; //Global var

[/CODE]

[CODE]

int init()

{

LastOpenTime=Time[0];

}

int start()

{

................

if(LastOpenTime!=Time[0])

{

// do your trade code

LastOpenTime=Time[0];

}

..............

return(0);

}

귀하의 "거래 코드"는 모든 양초에서 한 번만 실행됩니다. MT4를 닫고 다시 켜도 그 양초에 대한 거래는 더 이상 없을 것입니다. 그러나 주의하십시오. EA를 오후 5시 양초에 활성화했다고 가정해 보겠습니다. 해당 양초에는 거래가 없으며 다음 양초를 기다려야 합니다.

 
wolfe:
나는 이것이 전에 다루어졌다는 것을 알고 있지만 누군가 막대당 1개의 거래만 허용하는 일부 코드를 보여줄 수 있습니까? 감사해요.

전역, init() 앞에 놓으십시오.

datetime PreviousBar;[/CODE]

In the order placement and/or order close stuff, wrap it in this:

if(NewBar() == true)

{

if blah blah blah, gimme pips // not actual functions but you get the idea

if blah blah blah, close orders // um

}

Common function outside main loop:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}
 

프로그래밍에 대한 도움말

안녕,

프로그래밍을 하기 위해 최선을 다했지만 벽에 부딪혔습니다. 그래서 정말 간단한 것을 시도했습니다. "Print("Five");" 주석을 제거하면 프로그램을 테스트하면 "Yahoooooo"만 인쇄됩니다. (글쎄 그것은 One"도 인쇄합니다.) 이제 "Print("Five");"가 주석 처리되어 "Yahoooooo"도 인쇄되지 않습니다. 내가 놓친 것은 무엇입니까?

파일:
trial.mq4  2 kb
 

1 거래가 TP에 도달하면 보류 중인 모든 주문 및 미결 주문을 닫습니다.

안녕,

TP에 도달한 1개의 거래가 있으면 모든 보류 중인 주문을 닫는 코드를 EA에 작성하려고 합니다. 아래는 내가 사용한 코드이며 작동하지 않는 것 같습니다. 누군가가보고 누락 된 것을 조언 할 수 있습니까? 감사해요.

if( 이전OpenOrders > OpenOrders )

{

for( cnt = OrdersTotal()-1, cnt >= 0, cnt--)

{

주문 선택(cnt, SELECT_BY_POS, MODE_TRADES);

모드 = 주문 유형();

if( OrderSymbol() == 기호() &&

OrderMagicNumber()==매직)

{

if( 모드 == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue);

if( 모드 == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Red);

if (모드 == OP_SELLLIMIT) OrderDelete(OrderTicket());

if (모드 == OP_BUYLIMIT) OrderDelete(OrderTicket());

}

}

}

}

 

OrderClosePrice() 대신 Bid와 Ask를 각각 사용하십시오...

 
ralph.ronnquist:
OrderClosePrice() 대신 Bid와 Ask를 각각 사용하십시오...

안녕하세요 랄프님

당신은 예를 제공하는 데 도움이 될 수 있습니다. 도와 주셔서 감사합니다.

 
timebandit:
안녕하세요, 프로그래밍을 하려고 최선을 다했지만 벽에 부딪혔습니다. 그래서 정말 간단한 것을 시도했습니다. "Print("Five");" 주석을 제거하면 프로그램을 테스트하면 "Yahoooooo"만 인쇄됩니다. (글쎄 그것은 One"도 인쇄합니다.) 이제 "Print("Five");"가 주석 처리되어 "Yahoooooo"도 인쇄되지 않습니다. 내가 놓친 것은 무엇입니까?

대괄호를 사용하지 않으면 한 줄만 실행됩니다. 수행하려는 작업에 따라 다르지만 다음과 같이 수행해야 합니다.

if(d>5)

{

Print("Five");

Print("Yahoooooooooooooooooooooooo");

}
 

if( mode == OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Blue);

if( mode == OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage,Red);

 

한 번 정지 이동

다음은 특정 이익 후에 손절매를 손익분기점으로 이동 하는 코드입니다. 문제가 있습니까?

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() == Point * MoveStopWhenPrice) {

OrderModify(OrderTicket(),OrderOpenPrice(), Bid - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}