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

 
Roger09:
보다

double NormalizeDouble(이중 값, 정수 숫자)

숫자 = 2를 넣으면 원하는 것을 볼 수 있습니다.

안녕,

나는 내가 아주 명확하지 않았다고 생각한다. 예를 들어:

- 현재 가격이 1.3756이면 코드는 56을 반환해야 합니다.

- 현재 가격이 99.22이면 코드는 22를 반환해야 합니다.

- 현재 가격이 1.4499이면 코드는 99를 반환해야 합니다.

기본적으로 인용 부호가 소수점 이하 4자리인지 소수점 이하 2자리인지에 관계없이 마지막 두 자리의 값을 반환하려고 합니다.

NomalizeDouble은 가격을 지정된 자릿수로만 반올림합니다 .

누구나 아이디어가 있습니까?

 
musical:
안녕,

나는 내가 아주 명확하지 않았다고 생각한다. 예를 들어:

- 현재 가격이 1.3756이면 코드는 56을 반환해야 합니다.

- 현재 가격이 99.22이면 코드는 22를 반환해야 합니다.

- 현재 가격이 1.4499이면 코드는 99를 반환해야 합니다.

기본적으로 인용 부호가 소수점 이하 4자리인지 소수점 이하 2자리인지에 관계없이 마지막 두 자리의 값을 반환하려고 합니다.

NomalizeDouble은 가격을 지정된 자릿수로만 반올림합니다.

누구나 아이디어가 있습니까?

오케이

double lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point;

 
1Dave7:
SL이 10핍 이상인 경우 여러 EA의 미결 티켓 주문을 마감하는 EA를 어떻게 생성합니까?

데이브

<<<

Myfxidea는 촛대 패턴 차트 서비스이며 mt4에 대한 전문 고문을 제공합니다.

 
Roger09:
ОК 이중 마지막 숫자=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point;

매력처럼 작동합니다. 모든 도움에 감사드립니다

 

후행 정지 / 1 위험 또는 위치 M에 대한 도움말

안녕하세요 여러분,

내 문제에 대한 포럼 솔루션에서 검색을 시도했습니다.

내 EA 시작 시:

//---- buy conditions

if(Ask > mybuyconditions)

{

ticket=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-lowestof10bars), ((BBupper-BBlower)/(Ask-lowestof10bars))*1000 ,"Einstieg 1",magic+1,0,Green);

}

//---- sell conditions

if(Bid < mysellconditions)

{

ticket=OrderSend(Symbol(),OP_SELL,LotsShort(),Bid,Spread,Ask+(highestof10bars-Bid), ((BBupper-BBlower)/(highestof10bars-Bid))/100 ,"Einstieg -1",magic-1,0,Red);

}

//----[/CODE]

Stopploss: its easy 10 bars hi/lo

Takeprofit: here i write my formula for my Trailingstop, and that is:

Take the differenz of BBupper - BBlower at the order open time. Then divide by StopLoss in Pips and you have an Factor. Then take the actual BB differenz and divide it by this Faktor. NOW WE HAVE OUR VOLA BB TRAILINGSTOPP!!!!!

SO, my big problem is now to save this FAKTOR!!!! I saved it in th Takeprofit of Ordersend, it works but it is not right!!!!!

And know the 2te Question:

Position Management:

so my order is open and i have my trailing stopp that trails : So and now if the trailingstop is > orderopenprice send next ORDER!!! It's logical because so i can always sicure to risk just my 1 R Risk.

.... if Trailingstopp is > orderopenprice of secondOrder send 3te order.

HERE MY EXAMPLES:

for(int i = (OrdersTotal()-1); i >= 0; i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 2",magic+2,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2 && CalculateCurrentAfterOrders(Symbol()) <= 1)

{

if(OrderStopLoss()<Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 3",magic+3,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3 && CalculateCurrentAfterOrders(Symbol()) <= 2)

{

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

}

}

}

[CODE] if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

{

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 2",magic+2,0,Green);

return;

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 3",magic+3,0,Green);

return;

}

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(CalculateCurrentOrders(Symbol()) == 0)

{

OrderClose(ticket1,OrderLots(),Ask,Spread,Red); return;

}

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3)

{

OrderClose(i,OrderLots(),Ask,Spread,Red); return;

}

누군가가 이 문제를 해결할 수 있기를 바랍니다!!!!! 모두에게 감사합니다.

 

코드 추가 위치가 당신에게 불리할 때 "x" 핍은 fixedtpsl을 사용하여 추가 로트를 추가합니다.

안녕

나는 많은 연구를 했고 내 EA에 이 기능 을 추가하는 것이 좋을 수도 있다는 것을 알았습니다.

위치가 자신과 반대되는 경우 "20" 핍이 자체 TP 및 SL 입력으로 추가 로트 "0.1" 을 추가합니다.

실현 가능한가요??

또한 이 E는 매우 좋지만 BUYS만 엽니다.

아마도 광고 "판매" 논리

도와주세요

파일:
_v1.2.mq4  6 kb
 

프로그래밍 문제에 대한 도움이 필요함

EachTickMode를 false로 설정한 경우 Metatrader 4를 프로그래밍하여 이전 위치를 종료하고 동일한 막대에서 새 위치를 열 수 있습니까? EachTickMode를 True로 설정하면 자동으로 수행되지만 false로 설정하면 한 막대의 이전 위치를 닫고 다음 막대가 새 위치를 열 때까지 기다립니다. 나는 사용

신호가 주어진 후 새로운 포지션을 열기 위해 4시간을 더 기다리는 것은 허용되지 않습니다. 내 시스템은 EachTickMode=True를 사용하기에는 너무 민감합니다. 누구든지 이에 대해 도움을 주시면 대단히 감사하겠습니다.

 

Ordersend 오류 130을 통과하려면 도움이 필요합니다.

아래는 내 구매 기능입니다. order_type 변수를 1(시장 주문의 경우)로 설정하면 작동하므로 손절매 및 이익실현 기능이 작동 중임을 알 수 있습니다. 문제는 op_buylimit 주문에 대한 가격 결정에 있어야 합니다. 양초 몸체 길이(pct_of_length)(막대 1)의 백분율만큼 Ask를 줄여 주문 가격을 계산하려고 합니다. 다양한 코딩 변형(일부는 NormalizeDouble 포함)을 시도했지만 오류 130을 넘을 수 없습니다. 아무도 도와줄 수 없습니까? 참고로 저는 IBFX를 사용하고 있습니다.

미리 감사드립니다!

bool place_buy_order() {

int 티켓, length_in_pips, offset_in_pips;

이중 구매_한도_가격;

// pct_of_length는 현재 10으로 설정된 외부 정수입니다.

if ( order_type == 2 && pct_of_length > 0 )

{

length_in_pips = MathAbs(High[1]-Low[1]) * MathPow(10,Digits);

offset_in_pips = MathRound(length_in_pips * (pct_of_length/100));

buy_limit_price = 묻기 - offset_in_pips * 포인트;

티켓 = OrderSend(Symbol(),OP_BUYLIMIT,LotSize(),buy_limit_price,0,stoploss("b",buy_limit_price),takeprofit("b",buy_limit_price),"",MAGICMA,0,Blue);

}

또 다른

// 시장가 주문

티켓 = OrderSend(Symbol(),OP_BUY,LotSize(),Ask,Slippage,stoploss("b",Ask),takeprofit("b",Ask),"",MAGICMA,0,Blue);

if ( 티켓 == -1 ) return(거짓); 그렇지 않으면 반환(참);

}

 

다양한 변수, TP, SL 등을 출력해 보고 올바르게 설정되었는지 확인해 보셨습니까? 그러면 문제가 어디에 있는지 단서를 얻을 수 있습니다.

럭스

 
stocktrader24202:
EachTickMode를 false로 설정한 경우 Metatrader 4를 프로그래밍하여 이전 위치를 종료하고 동일한 막대에서 새 위치를 열 수 있습니까? EachTickMode를 True로 설정하면 자동으로 수행되지만 false로 설정하면 한 막대의 이전 위치를 닫고 다음 막대가 새 위치를 열 때까지 기다립니다. 저는 H4 기간을 사용하고 신호가 주어진 후 새 위치를 열기 위해 4시간 더 기다리는 것은 용납할 수 없습니다. 내 시스템은 EachTickMode=True를 사용하기에는 너무 민감합니다. 누구든지 이에 대해 도움을 주시면 대단히 감사하겠습니다.

EachTickMode는 EA의 원래 코더에 특별히 포함된 변수이므로 동일한 양초에서 열거나 다음 양초에서 열도록 선택할 수 있습니다.

EA가 의도한 대로 정확히 수행하고 있는 것 같아서 귀하의 문제가 무엇인지 잘 모르겠습니다.

변수를 true로 설정할 때 원하는 방식으로 작동한다고 하는데 문제가 무엇입니까? 변수를 true로 설정하면 됩니다.

럭스