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

 
vik-777 :

문제 해결을 도와주세요

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

for (int i=0; i<OrdersHistoryTotal(); i++)// 모든 터미널 주문에 대해
if(주문 선택(i, SELECT_BY_POS, MODE_HISTORY)==true)

매직넘버로 필터링 후

if (OrderMagicNumber()==12)

필터는 3가지 위치를 충족하며 마지막으로 닫힌 위치만 필요합니다.

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

감사해요

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos( string sy= "0" , int tf= 0 , int op=- 1 , int mn=- 1 ) {
   datetime t;
   int       i, k=OrdersHistoryTotal();

   if (sy== "" || sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if (OrderSymbol()==sy) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
   return (iBarShift(sy, tf, t, True));
}
귀하의 질문과 관련된 내용에 밑줄을 긋습니다.
 

나는 그것을 반복한다 매우 필요하다

문제 해결을 도와주세요

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

for (int i=0; i<OrdersHistoryTotal(); i++)// 모든 터미널 주문에 대해
if(주문 선택(i, SELECT_BY_POS, MODE_HISTORY)==true)

매직넘버로 필터링 후

if (OrderMagicNumber()==12)

필터는 3가지 위치를 충족하며 마지막으로 닫힌 위치만 필요합니다.

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

감사해요

 
- 멍청해도 좋아! tumts-tumts (노래의 가사)
 

도와주세요, 제발! 이전 주문이 마감된 직후 Tp 또는 SL 가격으로 주문을 개설해야 합니다.

#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#속성 링크 "http://www.metaquotes.net"
#프로퍼티쇼_확인
extern int MaxRisk=3;
extern bool 구매=거짓; //구매 주문을 열기 위해
extern bool Sell=true; //판매 주문을 열기 위해
외부 정수 MagicNumber=7749;
외부 정수 TP=210;
외부 int SL=420;

{
더블 포인트 =MarketInfo(Symbol(),MODE_POINT);//포인트 쿼리
이중 Free=AccountFreeMargin();
이중 One_Lot = MarketInfo(Symbol(),MODE_MARGINREQUIRED);
더블 스텝 =MarketInfo(Symbol(),MODE_LOTSTEP);
이중 로트 = MathFloor(무료*MaxRisk/100/One_Lot/Step)*Step;
int pos,total=OrdersTotal();
//----

if(구매==true && OrdersTotal()<=1)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point,"777"+ Symbol(), MagicNumber, 0, DarkGreen);

구매=거짓;
}
if(판매==true && OrdersTotal()<=1)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Bid-TP*Point,"4949"+ Symbol(), MagicNumber, 0, DarkGreen);

매도=거짓;
}

(pos=0; pos<전체; pos++)
if(주문 선택(pos,SELECT_BY_POS)==true)

if(OrdersTotal()==OP_BUY)
if(PRICE_CLOSE==OrderTakeProfit()) 매수=참;
if(PRICE_CLOSE==OrderStopLoss()) 판매=참;

}
}

if (OrderSelect(pos,SELECT_BY_POS)==true)
if (OrdersTotal()==OP_SELL)
{
if(PRICE_CLOSE==OrderStopLoss()) 구매=참;
if(PRICE_CLOSE==OrderTakeProfit()) 판매=참;

}
} }

//----
반환(0);
}
//+----------------------------------------------- --------------------+




 

여러분, 여기에 질문이 있습니다. 여기에 구매 신호가 있습니다. 고문이 주문을 열려고하지만 가격이 변경되고 오류가 잘못된 가격으로 나타납니다. 이 문제를 해결하는 방법, 그가 구매할 때까지 그는 무엇을 사려고 할 것입니까? ?

 void CLOSEORDER( string ord)
{
   for ( int i= 0 ; i< OrdersTotal (); i++)
   {                                               
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true)
      {
         if (OrderSymbol()!= Symbol ()) continue ;
         if (OrderType()==OP_BUY && ord== "Buy" )
            OrderClose(OrderTicket(),OrderLots(),Bid, 30 , CLR_NONE ); // Закрываем Buy
         if (OrderType()==OP_SELL && ord== "Sell" )
            OrderClose(OrderTicket(),OrderLots(),Ask, 30 , CLR_NONE ); // Закрываем Sell
      }   
   }
}
//--------------------------------------------------------------------
void OPENORDER( string ord)
{
   int error;
   if (ord== "Buy" ) error= OrderSend ( Symbol (),OP_BUY, LOT,Ask, 20 ,SL,TP, "" , 1 , 3 );
   if (ord== "Sell" ) error= OrderSend ( Symbol (),OP_SELL,LOT,Bid, 20 ,SL,TP, "" ,- 1 , 3 );
   if (error==- 1 ) //неудачная покупка OK
   {  
      ShowERROR(error, 0 , 0 );
   }

서곤 했다

Bid, 3 , CLR_NONE

나는 5 기호가 있기 때문에 30을 추가했지만 아무 소용이 없습니다

 
vik-777 :

나는 그것을 반복한다 매우 필요하다

문제 해결을 도와주세요

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



끝에서 시작하여 가장 먼저 맞는 것이 하나입니다.

for (int i=OrdersHistoryTotal()-1;i>=0; i--)//
if( 주문 선택 (i, SELECT_BY_POS, MODE_HISTORY )==true)


 
Craft :

또 하나의 골칫거리가 남았는데, 정지와 새 포지션을 여는 조건은 동일하지만 쿠데타가 발생하지 않고 포지션 폐쇄만 일어나는 영역이 있다.


이것은 자세히 연구해야 하며, EA에서 매수 및 매도를 여는 조건이 상호 배타적이지 않기 때문에 이러한 상황이 발생할 수 있습니다. 원칙에 따라 테스터에서 필요한 변수의 값을 추적하십시오.

if(Time[0]=='время_нужного_бара') //чтоб не засорять логи берем на конкретном баре - посмотрите на картинке, где именно ошибка
{
   Print("переменная=", значение);
}
 
Pyxlik2009 :

여러분, 여기에 질문이 있습니다. 여기에 구매 신호가 있습니다. 고문이 주문을 열려고하지만 가격이 변경되고 오류가 잘못된 가격으로 나타납니다. 이 문제를 해결하는 방법, 그가 구매할 때까지 그는 무엇을 사려고 할 것입니까? ?

서곤 했다

나는 5 기호가 있기 때문에 30을 추가했지만 아무 소용이 없습니다

while(true) 주문의 시작을 반복하고 오류 135를 확인한 다음 RefreshRates()를 확인합니다. 봐, 터미널은 예제가 있는 스크립트와 함께 제공되며 모든 것이 거기에 기록되어 있습니다.
 
alsu :

이것은 자세히 연구해야 하며, EA에서 매수 및 매도를 여는 조건이 상호 배타적이지 않기 때문에 이러한 상황이 발생할 수 있습니다. 원칙에 따라 테스터에서 필요한 변수의 값을 추적하십시오.

자, 이것을 코드의 어느 부분에 삽입해야 하는지, 실제로 어떻게 적용해야 할까요?
 
SergNF :

귀하의 질문과 관련된 내용에 밑줄을 긋습니다.
그래서 마지막으로 닫힌 주문이 선택되고 마술로 닫힌 마지막 주문이 필요합니다. 예를 들어 이들은 3,6, 9행이므로 마술로 닫힌 마지막 주문이기 때문에 3행이 필요합니다.