[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 593

 
chief2000 :

테스트 및 최적화할 때 우리는 가장 자주 하나의 통화 쌍을 사용하며 허용 가능한 이익을 얻습니다. 그런 다음 다른 통화에 대해 반복합니다. 그러나 결국 Expert Advisor는 하나의 거래 계정에서 관심 있는 모든 통화를 거래해야 합니다. 그들은 예상되는 "총" 감소가 각 통화에 대해 개별적으로 얻은 것보다 나을 수 있다고 말합니다(어디선가 비슷한 의견이 두 번 이상 있었습니다). 그러나 여러 Expert Advisors가 동시에 연패에 빠지면 훨씬 더 나빠질 수 있습니다.

이 주제에 대한 거래자의 경험도 흥미롭습니다. 직접 Seaboss에서 매우 유익한 비디오를 제공할 것입니다.

http://taverno.livejournal.com/2010/04/10/ Seaboss의 총 자산 관리는 Omega에 대해 구현됩니다. MT에도 유사한 구현이 있습니까?

 
안녕하세요, 포럼 참가자 여러분! 낮에 신청했는데 아무도 응답하지 않았습니다. 터미널 창에 수직 시간 라인을 표시하는 표시기가 필요합니다. 아마 준비가 되어 있을 것입니다. 어디서 구할 수 있습니까?
 
root :
안녕하세요, 포럼 참가자 여러분! 낮에 신청했는데 아무도 응답하지 않았습니다. 터미널 창에 수직 시간 라인을 표시하는 표시기가 필요합니다. 아마 준비가 되어 있을 것입니다. 어디서 구할 수 있습니까?

그들은 대답하지 않았습니다. 아마도 그러한 지표를 작성하는 것이 간단하고 아무도 필요하지 않기 때문일 것입니다.
 

vik-777 :

문제 해결을 도와주세요

모든 마감된 위치에 대해 선택합니다.

(int i=0; i<OrdersHistoryTotal(); i++)
if(주문 선택(i, SELECT_BY_POS, MODE_HISTORY)==true)

매직넘버로 필터링 후

if (OrderMagicNumber()==12)

필터는 3가지 위치를 만족하고, 나는 마법으로 닫힌 마지막 하나만 필요합니다.

마지막 하나만 남기는 방법을 알 수 없습니까?

감사해요

누군가 나를 도울 수 있습니까, 아무도 나를 도울 수 있습니까?
 
vik-777 :
누군가 나를 도울 수 있습니까, 아무도 나를 도울 수 있습니까?

도움이 되는 OrderCloseTime()
 
Figar0 :

도움이 되는 OrderCloseTime()
그리고 뭐? 나는 그들과 함께 마지막으로 마감된 주문을 찾을 수 있지만 마법으로 마지막으로 마감된 주문이 필요합니다. OrderCloseTime()으로 여러 주문을 비교하는 방법을 알려주세요.
 
vik-777 :
그리고 뭐? 나는 그들과 함께 마지막으로 마감된 주문을 찾을 수 있지만 마법으로 마지막으로 마감된 주문이 필요합니다. OrderCloseTime()으로 여러 주문을 비교하는 방법을 알려주세요.

 int LastClose = 0 ;
int LastTicket;
for ( int i= 0 ; i<OrdersHistoryTotal(); i++)
{
   if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)== true )
  {
     if (OrderMagicNumber()== 12 )
    {
       if (OrderCloseTime()>LastClose)
      {
        LastClose=OrderCloseTime();
        LastTicket=OrderTicket();
      }
    }
  }
}

if (LastClose> 0 )
{
   if (OrderSelect(LastTicket, SELECT_BY_TICKET, MODE_HISTORY)== true )
  {
   /// / Тра-та-та
  }
}
Koryavenko와 이마에. 더 예쁘고 간결하게...
 
Figar0 :

Koryavenko와 이마에. 더 예쁘고 간결하게...
감사합니다 정말 감사합니다
 
Craft :

이 주제에 대한 거래자의 경험도 흥미롭습니다. 직접 Seaboss에서 매우 유익한 비디오를 제공할 것입니다.

http://taverno.livejournal.com/2010/04/10/ Seaboss의 총 자산 관리는 Omega에 대해 구현됩니다. MT에도 유사한 구현이 있습니까?

다음은 내가 찾은 것입니다(아직 읽지 않았지만 주제에 있는 것 같습니다).

https://www.mql5.com/ru/forum/125825

 

일반적으로 나는 확률 이론을 거쳤고 통계에 따르면 보류 중인 주문이 가격에서 반경 50포인트 이내에 있으면 10포인트의 이익으로 주문을 열 때 도달하기가 더 쉽습니다. 또한 10포인트의 손절매(스프레드도 방해가 되지 않음)이며, 추세의 움직임은 대단한 것입니다...

StepStop에 관계없이 손절매 추가

//+----------------------------------------------- --------------------+
//| Volfram.mq4 |
//| Vova-x@list.ru |
//| |
//+----------------------------------------------- --------------------+
#재산권 저작권 "Vova-x@list.ru"
#속성 링크 ""
//-----------------------------------------
외부 정수 TakeProfit=10;
extern int StepStop=45;
extern 이중 랏=0.01;
extern bool MoneyManagement=true;
extern int MarginPercent=10;
//------------------------------------------------------------
int level_sell_stop;
int level_buy_stop;

//------------------------------------------------ ----------
무효 초기화()
{
// int minstop=MarketInfo(Symbol(),MODE_STOPLEVEL);
//Print("정지 레벨: "+minstop);
}
//------------------------------------------------ -----------
무효 시작()
{
if (!IsTradeAllowed()) 반환;
level_buy_stop=0;
level_sell_stop=0;
스테핑스톱();
스테핑 보류();
if (TotalBuy()==0 && TotalBuyStop()==0) SetBuyStop();
if (TotalSell()==0 && TotalSellStop()==0) SetSellStop();
Comment("Level Buy Stop=",level_buy_stop*포인트,
"\n","레벨 판매 중지=",level_sell_stop*포인트);
}
//------------------------------------------------ -------------------------------------------------- --
voidSteppingStop()
{
if (StepStop<1) 반환;
int 물음, 입찰, 열기, 중지, x;
이중 손실;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol())
if (OrderType()==OP_BUY)
{
입찰가=MathRound(입찰가/포인트);
open=MathRound(OrderOpenPrice()/포인트);
stop=MathRound(OrderStopLoss()/포인트);
x=(입찰 공개)/StepStop; 엑스--; x*=단계 정지;
level_sell_stop=개방+x;
if (중지>=열기+x)
loss=(open+x)*포인트;
OrderModify(OrderTicket(),OrderOpenPrice(),손실,OrderTakeProfit(),0,CLR_NONE);
}
if (주문 유형()==OP_SELL)
{
Ask=MathRound(질문/점);
open=MathRound(OrderOpenPrice()/포인트);
stop=MathRound(OrderStopLoss()/포인트);
x=(열기 요청)/StepStop; 엑스--; x*=단계 정지;
level_buy_stop=오픈-x;
if (stop>0 && stop<=open-x)
loss=(open-x)*포인트;
OrderModify(OrderTicket(),OrderOpenPrice(),손실,OrderTakeProfit(),0,CLR_NONE);
}
}
}
//------------------------------------------------ --------------------------
무효 SteppingPendings()
{
int 물음, 입찰, 열기;
이중 가격, 손실, 이익;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol())
if (OrderType()==OP_BUYSTOP)
{
if (level_buy_stop==0)
open=MathRound(OrderOpenPrice()/포인트);
if (open<=level_buy_stop)
price=level_buy_stop*포인트;
loss=price-StepStop*Point;
이익=0; if (TakeProfit>0) 이익 = 가격 + TakeProfit * 포인트;
OrderModify(OrderTicket(), 가격, 손실, 이익, 0, CLR_NONE);
}
if (OrderType()==OP_SELLSTOP)
{
if (level_sell_stop==0)
open=MathRound(OrderOpenPrice()/포인트);
if (open>=level_sell_stop)
price=level_sell_stop*포인트;
손실=가격+스텝스톱*포인트;
이익=0; if (TakeProfit>0) 이익=price-TakeProfit*Point;
OrderModify(OrderTicket(), 가격, 손실, 이익, 0, CLR_NONE);
}
}
}
//------------------------------------------------ --------------------
무효 SetBuyStop()
{
더블 랏=LotsCounting();
이중 가격=입찰가+스텝스톱*포인트;
이중 손실=가격-StepStop*포인트;
이중 이익 = 0; if (TakeProfit>0) 이익 = 가격 + TakeProfit * 포인트;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,랏,가격,0,손실,이익,"",0,0,CLR_NONE);
if (ticket<1) Print("대기 주문 설정이 오류 번호로 실패했습니다.",GetLastError()," ",(GetLastError()));
}

무효 SetSellStop()
{
더블 랏=LotsCounting();
이중 가격=Ask-StepStop*Point;
이중 손실=가격+스텝스톱*포인트;
이중 이익 = 0; if (TakeProfit>0) 이익=price-TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_SELLSTOP,랏,가격,0,손실,이익,"",0,0,CLR_NONE);
if (ticket<1) Print("대기 주문 설정이 오류 번호로 실패했습니다.",GetLastError()," ",(GetLastError()));
}


int TotalBuy()
{
정수 수 = 0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol()) 계속
if (OrderType()==OP_BUY) count++;
}
리턴(카운트);
}

int TotalBuyStop()
{
정수 수 = 0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol()) 계속
if (OrderType()==OP_BUYSTOP) count++;
}
반환(카운트);
}

정수 TotalSell()
{
정수 수 = 0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol()) 계속
if (OrderType()==OP_SELL) count++;
}
리턴(카운트);
}

int TotalSellStop()
{
정수 수 = 0;
for (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 중단;
if (OrderSymbol()!=Symbol()) 계속
if (OrderType()==OP_SELLSTOP) count++;
}
반환(카운트);
}

이중 LotCounting()
{
이중 로트 = 로트;
if (머니 매니지먼트)
{
이중 lotsize=MarketInfo(Symbol(),MODE_LOTSIZE);
이중 freemargin=AccountFreeMargin();
로트=0; if (lotsize>0) lot=NormalizeDouble((MarginPercent*freemargin/lotsize),1);
}
if (lots>10) lot=NormalizeDouble(lots,0);
if (lots<0.01) lots=0.01;
반환(많은);
}


// 끝