[ARCHIVE!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 4. - 페이지 2

 
tara :
2개라면?
그런 다음 이름은 알파벳순입니다.
 
     // Проверяем все открытые ордера---------------------------------------------------------------------------

     for (n= 0 ,i= 0 ;i< OrdersTotal ();i++)
   {
       OrderSelect (i,SELECT_BY_POS);
       if ( OrderSymbol ()!= Symbol () || OrderMagicNumber ()<MAGIC+ 1 || OrderMagicNumber ()>MAGIC+ 3 ) continue ;
      no= OrderMagicNumber ()-MAGIC;
      
       if (no== 1 )
      {
         n++;
         if ( OrderType ()==OP_SELL) { if ( OrderOpenTime ()>=ltts && BSo1==OP_SELL) s1=true; 
         if ( MathAbs (( OrderOpenPrice ()- NormalizeDouble (Bid, Digits ))/ Point )<Add){OS1= 1 ;} // Запрет на открытие селл

            } else
         if ( OrderType ()==OP_BUY) { if ( OrderOpenTime ()>=lttb && BSo==OP_BUY) b1=true;
         if ( MathAbs ( OrderOpenPrice ()- NormalizeDouble (Ask, Digits ))/ Point <Add){OB1= 1 ;} // Запрет на открытие бай
         }     
      }
   }
안녕하세요.
작업은 이미 열린 주문에서 특정 거리 "추가"에서 주문을 여는 것입니다.
매수와 매도는 별도로 통제됩니다.
이 코드를 작성했습니다. 잘 작동하는 것 같지만 때때로 가격이 "추가"보다 더 멀리 이동하고 주문이 열리지 않습니다.
지문을 넣어보니 '추가' 체크 조건이 어쩐지 제대로 작동이 안되는데 오류가 뭔지 모르겠네요.
누구든지 무엇을 제안할 수 있습니까?
 

친애하는, 여기서 나는 requote 와 관련된 한 가지 문제의 해결책에 의아해했습니다.

상황: 고문은 촉박한 스탑으로 시장에서 주문을 시작하고 포인트를 받고 닫힌 막대인 М15에서 작업합니다. 개설 신호가 수신되고 고문이 여러 번 거래를 열려고 시도하지만 작동하지 않습니다. 다음 막대에서 신호가 반복되고 고문은 여전히 거래를 시작하지만 첫 번째 신호가 제공된 지점에서 비율이 이미 갔습니다. 스톱 앤 테이크는 첫 번째 오픈 신호가 있을 때의 비율이 아니라 트랜잭션을 여는 비율에서 설정된다는 것이 밝혀졌습니다. 스톱 앤 테이크를 할 때 어드바이저가 첫 시그널을 받은 가격을 취하는데 requot가 없어서 테스터에서 확인이 안 될 것 같아서 질문드립니다. 내가 제대로 썼는지 전문가가 확인합니다.

   if (sg== 1 && TimeCurrent ()-buy_time>= 1800 ) {buy_price=Ask;buy_time= TimeCurrent ();} //
   if (sg==- 1 && TimeCurrent ()-sell_time>= 1800 ) {sell_price=Bid;sell_time= TimeCurrent ();} //
где,
sg== 1 сигнал на покупку
sg==- 1 сигнал на продажу
buy_time - переменная в которую запоминаем время поступления сигнала на покупку
sell_time - переменная в которую запоминаем время поступления сигнала на продажу

при выставлении ордера стоп и тейк прибавляем/вычитаем не от текущей цены а от buy_price и sell_price

첫 번째 신호를 사용하려는 이유를 설명하겠습니다. 테스터에서 stop과 take의 크기가 선택되었고 최적인 것 같습니다. 두 번째 신호에서 stop/take를 넣으면 더 이상 최적이 아닌 것으로 판명됩니다. , 실제로 거래를 여는 비율과 첫 번째 신호가 도착한 순간의 비율이 다르기 때문입니다.

 
evillive :

Tralit OrdersTotal - 1, 즉, 가장 오래된 것에 도달하지 않습니다. 이것이 첫 번째 것입니다. 둘째, 가장 최근의 것부터 가장 오래된 것까지 주문을 추적하며, 더 오래된 것은 지뢰 찾기가 도착하기 전에 잠시 멈추거나 인수할 수 있습니다. 일반적으로 정확히 작동하지 않는 것은 무엇입니까? 오류 로그가 있습니까?


TS는 전혀 작동하지 않습니다. "설계상" 위치가 전혀 닫히지 않는다는 사실을 이미 여러 번 확인했습니다. 오류 로그는 없지만 어떻게 얻을 수 있습니까?

그러나 청산 주문에 대해 조언자는 다중 통화이지만 한 번에 통화에 대한 첫 번째 거래 제한이 있기 때문에 더 자세히 쓸 수 있습니까?

 
Stells :
안녕하세요.
작업은 이미 열린 주문에서 특정 거리 "추가"에서 주문을 여는 것입니다.
매수와 매도는 별도로 통제됩니다.
이 코드를 작성했습니다. 잘 작동하는 것 같지만 때때로 가격이 "추가"보다 더 멀리 이동하고 주문이 열리지 않습니다.
지문을 넣어보니 '추가' 체크 조건이 어쩐지 제대로 작동이 안되는데 오류가 뭔지 모르겠네요.
누구든지 무엇을 제안할 수 있습니까?


간단하고 편리한 김이고르의 기능.

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |7
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает расстояние в пунктах между рынком и ближайшей       |
//|             позицей                                                        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    op - торговая операция          (    -1      - любая позиция)           |
//|    mn - MagicNumber                (    -1      - любой магик)             |
//+----------------------------------------------------------------------------+
int DistMarketAndPos( string sy= "" , int op=- 1 , int mn=- 1 ) {
   double d, p;
   int i, k= OrdersTotal (), r= 1000000 ;

   if (sy== "" || sy== "0" ) sy= Symbol ();
  p= MarketInfo (sy, MODE_POINT);
   if (p== 0 ) if ( StringFind (sy, "JPY" )< 0 ) p= 0.0001 ; else p= 0.01 ;
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
       if (( OrderSymbol ()==sy) && (op< 0 || OrderType ()==op)) {
         if (mn< 0 || OrderMagicNumber ()==mn) {
           if ( OrderType ()==OP_BUY) {
            d= MathAbs ( MarketInfo (sy, MODE_ASK)- OrderOpenPrice ())/p;
             if (r>d) r= NormalizeDouble (d, 0 );
          }
           if ( OrderType ()==OP_SELL) {
            d= MathAbs ( OrderOpenPrice ()- MarketInfo (sy, MODE_BID))/p;
             if (r>d) r= NormalizeDouble (d, 0 );
          }
        }
      }
    }
  }
   return (r);
}
 
Sancho77 :

친애하는, 나는 requote와 관련된 한 가지 문제의 해결책에 어리둥절했습니다.

상황: 고문은 촉박한 스탑으로 시장에서 주문을 시작하고 포인트를 받고 닫힌 막대인 М15에서 작업합니다. 개설 신호가 수신되고 고문이 여러 번 거래를 열려고 시도하지만 작동하지 않습니다. 다음 막대에서 신호가 반복되고 고문은 여전히 거래를 시작하지만 첫 번째 신호가 제공된 지점에서 비율이 이미 갔습니다. 스톱 앤 테이크는 첫 번째 오픈 신호가 있을 때의 비율이 아니라 트랜잭션을 여는 비율에서 설정된다는 것이 밝혀졌습니다. 스톱 앤 테이크를 할 때 어드바이저가 첫 시그널을 받은 가격을 취하는데 requot가 없어서 테스터에서 확인이 안 될 것 같아서 질문드립니다. 내가 올바르게 썼는지 확인하기 위해 전문가.

첫 번째 신호를 사용하려는 이유를 설명하겠습니다. 테스터에서 stop과 take의 크기가 선택되었고 최적인 것 같습니다. 두 번째 신호에서 stop/take를 넣으면 더 이상 최적이 아닌 것으로 판명됩니다. , 실제로 거래를 여는 비율과 첫 번째 신호가 도착한 순간의 비율이 다르기 때문입니다.

최적성은 tp와 sl의 수준에 의해서만 결정되며 거래 가격 은 무엇이든 될 수 있습니까? 어떻게 보면 이것은 비논리적입니다.
 
alsu :
최적성은 tp와 sl의 수준에 의해서만 결정되며 거래 가격은 무엇이든 될 수 있습니까? 어떻게 보면 이것은 비논리적입니다.

최적성은 스톱 앤 테이크에 의해서만 결정되는 것이 아니라 주로 거래를 시작하는 신호의 매개변수에 의해 결정됩니다. 내 질문을 어지럽히지 않도록 이러한 신호를 제공하지 않습니다. 신호 매개변수는 문제에 적용되지 않습니다 고려. 거래를 시작하라는 신호가 남아 있으면 거래 가격 은 무엇이든 될 수 있습니다.

내 질문의 본질에 대한 귀하의 의견을 말씀해 주시면 감사하겠습니다. stop 및 take가 계산되는 수준을 계산하기 위해 코드가 올바르게 작성되었습니까?

 
Sancho77 :

손에 코드가 없지만 나는 나 자신을 위해 비슷한 것을했지만 전혀하지 않았습니다. 신호가 있던 막대의 시간을 기억하고이 신호에 대한 주문이있을 때 신호 시간이 0으로 재설정되었습니다. , 이 같은:

 datetime buy_time,sell_time;
int init(){
   buy_time = 0 ;
   sell_time = 0 ;
}
int start(){
   if (buy_time== 0 && Open[ 1 ]>Close[ 2 ]) buy_time = TimeCurrent ();
   .......
   if (buy_time!= 0 ){
       OrderSend (.........);
      buy_time = 0 ;
   }
return ( 0 );
}
글쎄, 싸움의 문제가 requotes 인 경우 Igor Kim의 스레드를 뒤져 거의 모든 주문 기능에는 주문을 시도하는 횟수 매개 변수가 있습니다.
 
Sancho77 :

최적성은 스톱 앤 테이크에 의해서만 결정되는 것이 아니라 주로 거래를 시작하는 신호의 매개변수에 의해 결정됩니다. 내 질문을 어지럽히지 않도록 이러한 신호를 제공하지 않습니다. 신호 매개변수는 문제에 적용되지 않습니다 고려. 거래를 시작하라는 신호가 남아 있으면 거래 가격은 무엇이든 될 수 있습니다.

내 질문의 본질에 대한 귀하의 의견을 말씀해 주시면 감사하겠습니다. stop 및 take가 계산되는 수준을 계산하기 위해 코드가 올바르게 작성되었습니까?

예, 올바르게 작성되었습니다. 상황을 상상해보십시오. "실제" 거래 가격 이 예를 들어 암기 된 TP보다 높은 것으로 판명되었습니다. 그러면 어떻게 하시겠습니까? (이 상황은 매우 현실적입니다. 가격이 급등할 때 빠른 시장에서 재호가가 발생합니다)
 
alsu :
예, 올바르게 작성되었습니다. 상황을 상상해보십시오. "실제"거래 가격이 예를 들어 암기 된 TP보다 높은 것으로 판명되었습니다. 그러면 어떻게 하시겠습니까? (이 상황은 매우 현실적입니다. 가격이 급등할 때 빠른 시장에서 재호가가 발생합니다)

의견을 주셔서 감사합니다.

글쎄, 가격이 기억된 TP보다 높은 것으로 판명되면 거래는 최소 테이크 레벨로 열릴 것이며 이러한 처리는 고문에 포함됩니다.

PS 그건 그렇고 새로운 가격이 기억된 가격에서 일정 거리 이상 벗어나면 포지션 개설 금지를 삽입하려고 노력해야 할 것입니다 아이디어 감사합니다 이것을 확인할 수 없다는 것이 유감입니다 테스터에서 거래에서만.