모두들 친절하세요! 일반적으로 문제는 다음 계획입니다. 트리플 로트로 포지션을 개설해야 하는 TS가 있으며, 그 후 각 로트가 별도로 수반됩니다(자체 TP, 마감 신호 포함). 구현에 관심이 있습니다. 다음과 같은 방법이 떠올랐습니다. 3개의 지연기를 사용하고 티켓을 기억한 다음 각자의 조건에 따라 개별적으로 선택하고 닫는 것입니다. 다른 방법(또는 더 편리한 방법)이 있습니까?
추신. 오해하지 마십시오. 약 한 달 전에 제가 처음으로 Expert Advisor를 뒷면에 썼습니다 =)))))
각 주문("lot_1", "lot_2"....)에 대한 자신의 의견을 설정하고, 의견으로 주문을 인식합니다...
나는 여기에 더 최적의 것이있을 것이라고 말하지 않을 것입니다. 나중에 주문으로 무엇을 할 것인지, 또 다른 3 개의 주문을 열 수 있는지 여부는 분명하지 않습니다 ....
고맙습니다! 귀하의 옵션에 대한 고문에서 수정되었습니다. 여기에 나는 이 기적을 추가하고 코드 베이스에 나의 첫 (다소) 진지한 창조물로 게시할 것입니다! =)) 내가 고문을 작성하는 시스템은 Muteki라고 하며 약간만 추가됩니다(포지션 관리) . 이 모든 추세선을 표시하는 지표가 최소한 있다는 것은 좋은 일입니다 =)))
또 다른 질문이 있었습니다. 동시에 3개의 포지션(또는 대략 1개의 견적)을 여는 방법은 무엇입니까?저는 다음을 수행했습니다. 이게 맞는건가요 아니면 다른 방법이 있는건가요? 지연은 작동하지 않습니다 =(( 작은 거리가 때로는 너무 많습니다 :(
if(b1==0 && !IsTradeContextBusy()) { if(Low[0]<HHL_1 && Bid>=HHL_1 && trade_buy==true) { ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage*PointX,sl_b,BuyTarget1,"lot_1_buy",Magic,0,Lime); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("lot_1_buy order opened : ",OrderOpenPrice()); b1=1; } else Print("Error opening BUY order : ",GetLastError());
// ищем самый последний закрытый ордерfor( i =OrdersHistoryTotal(); i >=0; i --){if(OrderSelect( i , SELECT_BY_POS , MODE_HISTORY )){if(OrderSymbol()==Symbol()){if(OrderMagicNumber()==16384){if(OrderCloseTime()!=0){if(OrderCloseTime()> time ){
time =OrderCloseTime();
profit =OrderProfit();//мартинif( profit <=0) Lots =OrderLots()*2;//----}}}}}}//-----
아이디어에 따르면 함수는 마지막으로 마감된 로트를 찾고 손실이 발생하면 새 거래를 열기 위한 로트가 두 배가 됩니다.
실제로, 수익성 있는 거래가 기록에 있었는지 여부에 관계없이 각각의 새로운 거래에는 이중 로트가 제공됩니다.
int total = OrdersHistoryTotal(); double spread = MarketInfo(Symbol(), MODE_SPREAD);
for (int i = 0; i < total; i++) { OrderSelect(i, SELECT_BY_POS, MODE_HISTORY); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderProfit() > 0) { result = Lots;
} else { result = OrderLots() * koeff;
} } } result = NormalizeDouble(result, round); if (result > maxlot) { result = maxlot; } if (result < minlot) { result = minlot; } RefreshRates(); return(result); }
모두들 친절하세요! 일반적으로 문제는 다음 계획입니다. 트리플 로트로 포지션을 개설해야 하는 TS가 있으며, 그 후 각 로트가 별도로 수반됩니다(자체 TP, 마감 신호 포함). 구현에 관심이 있습니다. 다음과 같은 방법이 떠올랐습니다. 3개의 지연기를 사용하고 티켓을 기억한 다음 각자의 조건에 따라 개별적으로 선택하고 닫는 것입니다. 다른 방법(또는 더 편리한 방법)이 있습니까?
추신. 오해하지 마십시오. 약 한 달 전에 제가 처음으로 Expert Advisor를 뒷면에 썼습니다 =)))))
각 주문("lot_1", "lot_2"....)에 대한 자신의 의견을 설정하고, 의견으로 주문을 인식합니다...
이해가 안되시면 자세히 적어주세요...
각 주문("lot_1", "lot_2"....)에 대한 자신의 의견을 설정하고, 의견으로 주문을 인식합니다...
이해가 안되시면 자세히 적어주세요...
Stat Bars 감사합니다! 나는 이제 막 마법을 선택하기 시작했다. 이런 모습이 될 것 같나요? (나는 Expert Advisors 중 하나에 비슷한 것이 있었다는 것을 기억합니다 =)) 그렇다면 어떤 옵션이 가장 최적입니까?
if ( (OrderSymbol() == Symbol()) &&
(StringSubstr(OrderComment(),0,0) == "lot_1") )
Stat Bars 감사합니다! 나는 이제 막 마법을 선택하기 시작했다. 이런 모습이 될 것 같나요? (나는 Expert Advisors 중 하나에 비슷한 것이 있었다는 것을 기억합니다 =)) 그렇다면 어떤 옵션이 가장 최적입니까?
if ( (OrderSymbol() == Symbol()) &&
(StringFind(OrderComment(),"lot_1") >= 0) )
조금 수정했습니다.
나는 보통 "나의" 전문가 명령을 식별하기 위해 마법과 상징을 사용합니다.
나머지 정보는 댓글에 다 넣었습니다.
나는 여기에 더 최적의 것이있을 것이라고 말하지 않을 것입니다. 나중에 주문으로 무엇을 할 것인지, 또 다른 3 개의 주문을 열 수 있는지 여부는 분명하지 않습니다 ....
조건이 충족되는 동안 틱마다 트리거됩니다. 시어머니를 위한 코드를 다시 작업하고 있는 것 같은데요? :)
정말 감사합니다! 컴파일된 모든 것이 작동하고 모든 틱에서 경고음이 울립니다.
아직 시어머니는 없지만 .. 있으면이 아이디어를 서비스로 사용할 것입니다.)))
죄송합니다 질문이 있습니다. 프로그래밍 방식으로 클라이언트를 충돌시키는 방법.
디컴파일에 대한 연구에서 디컴파일의 모호성을 발견했습니다. 이제 문제는 그것을 사용하는 방법입니다.
시스템을 깨는 옵션으로.
또는 디컴파일을 중단합니다.
조금 수정했습니다.
Magick 및 기호는 일반적으로 "내" 전문가 명령을 식별하는 데 사용됩니다.
나머지 정보는 댓글에 다 넣었습니다.
나는 여기에 더 최적의 것이있을 것이라고 말하지 않을 것입니다. 나중에 주문으로 무엇을 할 것인지, 또 다른 3 개의 주문을 열 수 있는지 여부는 분명하지 않습니다 ....
고맙습니다! 귀하의 옵션에 대한 고문에서 수정되었습니다. 여기에 나는 이 기적을 추가하고 코드 베이스에 나의 첫 (다소) 진지한 창조물로 게시할 것입니다! =)) 내가 고문을 작성하는 시스템은 Muteki라고 하며 약간만 추가됩니다(포지션 관리) . 이 모든 추세선을 표시하는 지표가 최소한 있다는 것은 좋은 일입니다 =)))
또 다른 질문이 있었습니다. 동시에 3개의 포지션(또는 대략 1개의 견적)을 여는 방법은 무엇입니까?저는 다음을 수행했습니다. 이게 맞는건가요 아니면 다른 방법이 있는건가요? 지연은 작동하지 않습니다 =(( 작은 거리가 때로는 너무 많습니다 :(
if(b1==0 && !IsTradeContextBusy())
{
if(Low[0]<HHL_1 && Bid>=HHL_1 && trade_buy==true)
{
ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage*PointX,sl_b,BuyTarget1,"lot_1_buy",Magic,0,Lime);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("lot_1_buy order opened : ",OrderOpenPrice());
b1=1;
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
}
아이디어에 따르면 함수는 마지막으로 마감된 로트를 찾고 손실이 발생하면 새 거래를 열기 위한 로트가 두 배가 됩니다.
실제로, 수익성 있는 거래가 기록에 있었는지 여부에 관계없이 각각의 새로운 거래에는 이중 로트가 제공됩니다.
질문: 무슨 일이야?
하나의 기능을 재작업한 기억이 있습니다. 다음은 코드입니다. 랏(순서대로) =getLots(), koeff= 로트 증가 계수(기본값은 2) 최대 10로트까지만(0.1에서) 테스트 중에 얻었습니다 =))))
double getLots() {
double minlot = MarketInfo(Symbol(), MODE_MINLOT);
double maxlot = MarketInfo(Symbol(), MODE_MAXLOT);
int round;
if(minlot==0.01)round=2;
if(minlot==0.1) round=1;
double koeff=2;
double result=Lots;
int total = OrdersHistoryTotal();
double spread = MarketInfo(Symbol(), MODE_SPREAD);
for (int i = 0; i < total; i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderProfit() > 0)
{
result = Lots;
} else {
result = OrderLots() * koeff;
}
}
}
result = NormalizeDouble(result, round);
if (result > maxlot) {
result = maxlot;
}
if (result < minlot) {
result = minlot;
}
RefreshRates();
return(result);
}
어딘가에 함수에 오류가 있습니다. 찾을 수 없더라도 ( 또는 {
코드를 첨부했습니다.