// ищем самый последний закрытый ордерdatetime time =0;int ticket =-1;for( i =OrdersHistoryTotal()-1; i >=0; i --){if(OrderSelect( i , SELECT_BY_POS , MODE_HISTORY )){if(OrderSymbol()==Symbol()&&OrderMagicNumber()==16384){if(OrderCloseTime()> time ){
time =OrderCloseTime();
ticket =OrderTicket();}}}}if(OrderTicket()!= ticket )OrderSelect(ticket, SELECT_BY_TICKET );if(OrderProfit()<=0) Lots =OrderLots()*2;//-----
고맙습니다! 귀하의 옵션에 대한 고문에서 수정되었습니다. 여기에 나는 이 기적을 추가하고 코드 베이스에 나의 첫 (다소) 진지한 창조물로 게시할 것입니다! =)) 내가 고문을 작성하는 시스템은 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); } }
여기에서 하나의 주문을 엽니다. 한 번에 3개를 시도하면 이 단계에서 더 빨리 나타납니다.
직접 실험해보지는 않았지만 3개의 거래 터미널을 병렬화하고 각 터미널에서 개별적으로 거래를 열면 뭔가를 얻을 수 있을지도...
//int round = 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); }
// ищем самый последний закрытый ордерfor( i =OrdersHistoryTotal(); i >=0; i --){if(OrderSelect( i , SELECT_BY_POS , MODE_HISTORY )){if(OrderSymbol()==Symbol()){if(OrderMagicNumber()== Magic ){if(OrderCloseTime()!=0){if(OrderCloseTime()> time ){
time =OrderCloseTime();
profit =OrderProfit();//мартинif( profit <0) Lots =OrderLots()*2;if( profit >=0) Lots =0.1;// начальный лот//----}}}}}}//-----
double getLot (){if(OrdersHistoryTotal()==0)return(0.1);// ищем самый последний закрытый ордерdatetime time =0;int ticket =-1;for( i =OrdersHistoryTotal()-1; i >=0; i --){if(OrderSelect( i , SELECT_BY_POS , MODE_HISTORY )){if(OrderSymbol()==Symbol()/* && OrderMagicNumber()==16384*/){if(OrderCloseTime()> time ){
time =OrderCloseTime();
ticket =OrderTicket();}}}}if(OrderTicket()!= ticket )OrderSelect( ticket , SELECT_BY_TICKET );if(OrderProfit()<=0)return(NormalizeDouble(OrderLots()*2,2));if(OrderProfit()>0)return(0.1);//-----}
어쩌면 더 나을거야
당신의 도움을 주셔서 대단히 감사합니다!!
미국은 울고 유럽은 운다!
미래에 대해 진지하게 생각하십시오!
그들은 재정적인 f-pa를 생각하는 것 같습니다.
그리고 lischb 러시아 - ... 서리!
선반에서 오래된 하모니카를 꺼내자
우리는 그러한 위기에 익숙하지 않습니다!
보드카 지방과 감자가있을 것입니다.
우리는 모든 것을 살아남을 것입니다, 씩씩한 어머니 !!!
2월 23일부터 모두!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
고맙습니다! 귀하의 옵션에 대한 고문에서 수정되었습니다. 여기에 나는 이 기적을 추가하고 코드 베이스에 나의 첫 (다소) 진지한 창조물로 게시할 것입니다! =)) 내가 고문을 작성하는 시스템은 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);
}
}
여기에서 하나의 주문을 엽니다. 한 번에 3개를 시도하면 이 단계에서 더 빨리 나타납니다.
직접 실험해보지는 않았지만 3개의 거래 터미널을 병렬화하고 각 터미널에서 개별적으로 거래를 열면 뭔가를 얻을 수 있을지도...
Код вроде бы такой должен быть... но не проверял...
오류가 발생하여 경고로 표시했는데 로트가 항상 0으로 나온다고 합니다.
네크론에게:
코드에서 오류를 발견하고 제거했지만 여전히 다음과 같이 맹세합니다.
테크노:
더블)
내 Expert Advisors 중 하나에서 수행하는 방법은 다음과 같습니다.
double lt = getLots();//эта строчка в переменных, в ордерсенд пишем lt,
double getLots() { // это или перед start или после всего кода
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 round = 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);
}
Techno , 팁 감사합니다!) StatBars 와 Necron 에게도 감사드립니다.
하지만 마틴게일이 정확히 나오도록 하기 위해 코드를 약간 수정했습니다))
여기에서 하나의 주문을 엽니다. 한 번에 3개를 시도하면 이 단계에서 더 빨리 나타납니다.
직접 실험해보지는 않았지만 3개의 거래 터미널을 병렬화하고 각 터미널에서 개별적으로 거래를 열면 뭔가를 얻을 수 있을지도...
알겠습니다, 6개 =) 3개는 구매, 3개는 판매용입니다. 나중에 데모에서 확인하려고 합니다. 최후의 수단으로 deferred를 사용하여 무언가를 시도할 것입니다.
오류가 발생하여 경고로 표시했는데 로트가 항상 0으로 나온다고 합니다.