MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 155

 
Alexander Antoshkin :

당신은 무엇을 할 수...?

전구를 교체하는 데 몇 호빗이 필요합니까?

프리랜서로 보내시겠습니까? "거기서 읽으세요"라고 쓰나요?

예에서와 같이 일련의 주문을 마감하기 위한 거래의 좌표를 기록에서 어떻게 찾을 수 있습니까(여기에 선을 긋을 계획입니다)

이 스레드의 151페이지에서 이미 질문을 했지만 이해할 수 있는 솔루션을 찾지 못했습니다. https://www.mql5.com/ru/forum/160683/page151



동일한 마감 표시줄을 사용하여 일련의 주문에 대한 검색 내역. 이 막대의 시간이 원하는 시간이 됩니다.
 
Alexander Antoshkin :

당신은 무엇을 할 수...?

전구를 교체하는 데 몇 호빗이 필요합니까?

프리랜서로 보내시겠습니까? "거기서 읽으세요"라고 쓰나요?

우리는 많이 할 수 있습니다 :)

호빗 문제는 명확한 해법이 없다...

이해가 안 된다면 제 대답은 Vitalie Postolache 가 인용한 동일한 비디오에서 나온 것입니다.

하지만 진지하게:

예에서와 같이 일련의 주문을 마감하기 위한 거래의 좌표를 기록에서 어떻게 찾을 수 있습니까(여기에 선을 긋을 계획입니다)

이 스레드의 151페이지에서 이미 질문을 했지만 이해할 수 있는 솔루션을 찾지 못했습니다. https://www.mql5.com/ru/forum/160683/page151

링크의 스레드를 읽지 않았습니다. 그러나 나는 이것을 할 것입니다 :

X 포인트 내에서 (동일하거나 다른 유형의) 여러 주문을 마감한다는 사실을 결정합니다(실제로 모든 거래가 동일한 가격으로 마감되지 않을 수 있도록 X 포인트 범위가 필요함), 평균 마감 가격을 결정하고 추첨 그것에 선.

 
Artyom Trishkin :
동일한 마감 막대가 있는 일련의 주문에 대한 기록을 찾습니다. 이 막대의 시간이 원하는 시간이 됩니다.
여기에 내 솔루션 방법과 동일한 문제가 있습니다. ping 및 주문 수에 따라 하나의 촛불에 대한 모든 거래가 닫히지 않을 수 있습니다...
 
Alexey Kozitsyn :
여기에 내 솔루션 방법과 동일한 문제가 있습니다. ping 및 주문 수에 따라 하나의 촛불에 대한 모든 거래가 닫히지 않을 수 있습니다...
M1에 동의합니다. 다른 사람들에게는 놀라운 일입니다. 양초가 열리기 전에만 문을 닫으라는 명령이 온다면. 두 세트의 주문이 있을 것입니다. 인접한 두 개 중 마지막을 가져옵니다.
 
Artyom Trishkin :
M1에 동의합니다. 다른 사람들에게는 놀라운 일입니다. 양초가 열리기 전에만 문을 닫으라는 명령이 온다면. 두 세트의 주문이 있을 것입니다. 인접한 두 개 중 마지막을 가져옵니다.

여기에서 솔루션에 대한 데이터가 거의 제공되지 않았습니다. 하나의 양초에 여러 팩을 닫을 수 있습니다(예: 시간별 또는 매일의 양초를 확인하는 경우).

 
Vitalie Postolache :


평행한 빨간색 선이 필요하지만 교차하여 그 중 3개는 녹색이고 나머지는 보라색))))

아, 그리고 고양이 모양의 직선이 하나 있습니다!

작업이 잘못된 것 같습니까?

 
Alexey Kozitsyn :

여기에서 솔루션에 대한 데이터가 거의 제공되지 않았습니다. 하나의 양초에 여러 팩을 닫을 수 있습니다(예: 시간별 또는 매일의 양초를 확인하는 경우).

어쨌든 정확할수록 좋습니다.

내 주문이 손실 없이 후행 중지 조건에 따라 마감되는 변형에서

저것들

if(b+s>0)
{
for(i=0; i<OrdersTotal(); i++)
{
if(주문선택(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
{
팁 = 주문 유형();
OSL = NormalizeDouble (OrderStopLoss(), Digits);
OTP = NormalizeDouble(OrderTakeProfit(), 자릿수);
OOP = NormalizeDouble(OrderOpenPrice(), 숫자);
SL=OSL;
if(팁==OP_BUY)
{
SL=NormalizeDouble(Bid-TrailingStop*Point,Digits);
if(SL>OSL && SL>NLb)
{
if(!OrderModify(OrderTicket(),OOP,SL,0,0,White)) Print("주문 수정 오류",GetLastError());
}
}
if(팁==OP_SELL )
{
SL=NormalizeDouble(Ask+TrailingStop*Point,Digits);
if((SL<OSL || OSL==0) && SL<NLs)
{
if(!OrderModify(OrderTicket(),OOP,SL,0,0,White)) Print("주문 수정 오류",GetLastError());
}

 
Alexey Kozitsyn :
새로운 막대가 형성되는 순간에 입력되는 값인 추가 버퍼를 포함하는 고유한 MA 표시기를 작성하십시오.

이동 평균 을 평균화하는 다양한 방법을 포함하여 문제를 해결하기 위한 알고리즘에 대해 논의하고 싶습니다.

 
Alexey Kozitsyn :

우리는 많이 할 수 있습니다 :)

X 포인트 내에서 (동일하거나 다른 유형의) 여러 주문을 마감한다는 사실을 결정합니다(실제로 모든 거래가 동일한 가격으로 마감되지 않을 수 있도록 X 포인트 범위가 필요함), 평균 마감 가격을 결정하고 추첨 그것에 선.

 int TotalPos=- 1 ;

void start()
{
   if (OrdersTotal()!=TotalPos) { // не мучаем каждый тик
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
     if (OrderSymbol()==Symbol() && OrderType()<= 1 ) {
      History();
     }
  }}} TotalPos=OrdersTotal(); // запомним количество
//--
} 
 
 void History() {
   string Ticket=( string )OrderTicket();
  color col=Red;
   if (OrderType()== 0 )col=Blue;
  datetime a=OrderOpenTime();
   double b=OrderOpenPrice();
  datetime c=OrderCloseTime();
   double d=OrderClosePrice();
   double prSep=OrderProfit()+OrderCommission()+OrderSwap();
   double prAll= 0 ;
   int     cn= 0 ;
   string hTicket;
   for ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
     if (OrderSymbol()==Symbol() && OrderType()<= 1 ) {
      datetime ct=OrderCloseTime();
       // 60 секунд разницы между закрытием первой и последней в сетке
       if (c<=ct+ 60 && c>=ct- 60 ) {
        prAll+=OrderProfit()+OrderCommission()+OrderSwap();
        hTicket=( string )OrderTicket();
        cn++;
      }
   }}}
   ObjectCreate(Ticket+ 'Open' ,OBJ_ARROW, 0 ,a,b);
   ObjectSet(Ticket+ 'Open' ,OBJPROP_COLOR,col);
   ObjectSet(Ticket+ 'Open' ,OBJPROP_ARROWCODE, 1 );
      
   ObjectCreate(Ticket+ 'Line' ,OBJ_TREND, 0 ,a,b,c,d);
   ObjectSet(Ticket+ 'Line' ,OBJPROP_COLOR,col);
   ObjectSet(Ticket+ 'Line' ,OBJPROP_WIDTH, 1 );
   ObjectSet(Ticket+ 'Line' ,OBJPROP_STYLE,STYLE_DOT);
   ObjectSet(Ticket+ 'Line' ,OBJPROP_RAY, 0 );
      
   ObjectCreate(Ticket+ 'Close' ,OBJ_ARROW, 0 ,c,d);
   ObjectSet(Ticket+ 'Close' ,OBJPROP_COLOR,Green);
   ObjectSet(Ticket+ 'Close' ,OBJPROP_ARROWCODE, 3 );
  
   Ticket=cn> 1 ?hTicket:Ticket;
   ObjectCreate(Ticket+ 'Profit' ,OBJ_TEXT, 0 ,c,d);
   ObjectSet(Ticket+ 'Profit' ,OBJPROP_ANCHOR, 0 );
   ObjectSetText(Ticket+ 'Profit' ,DoubleToString(prAll, 2 ), 10 , 'Arial' ,White);
   ObjectSet(Ticket+ 'Profit' ,OBJPROP_PRICE1,d);
   ObjectSet(Ticket+ 'Profit' ,OBJPROP_TIME1,c+Period()* 60 * 2 );

이것은 어떻게든 스크립트에 연결되어야 합니다.

일련의 마감 매도 주문이

ObjectCreate(티켓+'부채 B', OBJ_HLINE ,0,0,d);
ObjectSet(티켓+'부채 B',OBJPROP_COLOR,LimeGreen);
ObjectSet(티켓 + 'B 부채',OBJPROP_WIDTH,1);

일련의 마감 주문이 매수되면

ObjectCreate(티켓+'부채 M',OBJ_HLINE,0,0,d);
ObjectSet(티켓+'부채 M',OBJPROP_COLOR,빨간색);
ObjectSet(티켓+'부채 M',OBJPROP_WIDTH,1);

돕다?
 
-Aleks- :

이동 평균 을 평균화하는 다양한 방법을 포함하여 문제를 해결하기 위한 알고리즘에 대해 논의하고 싶습니다.

터미널의 Include 폴더에 있는 MovingAverages.mqh 파일을 보십시오.