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

 
Notter :

안녕하세요,

차트에 레이블을 넣는 방법을 알려주세요. 예를 들어, 주문이 열리지 않았지만 적어도 차트에서 열렸어야 하는 시점을 확인하는 것입니다.

고맙습니다.

이 같은

 #include <stderror.mqh>

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int Err;
//----
       if (...........) //покупаем
          { 
          Err= OrderSend (..................);
             if (Err< 0 )
                SetArrow( 159 , Blue, "ошибка открытия № " + GetLastError (),Time[ 0 ],Open[ 0 ], 2 );
          }
       if (...........) //продаем
          { 
          Err= OrderSend (..................);
             if (Err< 0 )
                SetArrow( 159 , Red, "ошибка открытия № " + GetLastError (),Time[ 0 ],Open[ 0 ], 2 );
          }
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Установка значка на графике, объект OBJ_ARROW.                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    cd - код значка                                                         |
//|    cl - цвет значка                                                        |
//|    nm - наименование               ("" - время открытия текущего бара)     |
//|    t1 - время открытия бара        (0  - текущий бар)                      |
//|    p1 - ценовой уровень            (0  - Bid)                              |
//|    sz - размер значка              (0  - по умолчанию)                     |
//+----------------------------------------------------------------------------+
void SetArrow( int cd, color cl,
               string nm= "" , datetime t1= 0 , double p1= 0 , int sz= 0 ) {
   if (nm== "" ) nm=DoubleToStr(Time[ 0 ], 0 );
   if (t1<= 0 ) t1=Time[ 0 ];
   if (p1<= 0 ) p1=Bid;
   if ( ObjectFind (nm)< 0 ) ObjectCreate (nm, OBJ_ARROW , 0 , 0 , 0 );
  ObjectSet(nm, OBJPROP_TIME1    , t1);
  ObjectSet(nm, OBJPROP_PRICE1   , p1);
  ObjectSet(nm, OBJPROP_ARROWCODE , cd);
  ObjectSet(nm, OBJPROP_COLOR     , cl);
  ObjectSet(nm, OBJPROP_WIDTH     , sz);
}
 
dertop :


예, 처음으로 포럼에 글을 썼을 때 혼란을 드려 죄송합니다. 먼저 복사 붙여넣기 하고 펜으로 결정하고 헷갈렸는데.. 위의 예에서는 다 맞습니다..

MA1>MA2 및 MA1<MA3 및 MA3<MA4


다음 스레드 를 확인하십시오
 
Vinin :


여기 뭔가 이상해

MA1>MA2 및 MA2>MA3 다음 MA1<MA3

게다가 충분히

예, 실제로 서로 모순됩니다. 나는 단지 모든 것을 보지 않았다! 작가님은 아직 '어려운 실수'를 하려면 갈 길이 멉니다!
 

질문은 ~이야. 이런 상황은 이번이 처음이 아닙니다.

각 틱에서 후행 함수 또는 예를 들어 breakeven 함수가 호출되면 오류가 나타납니다. - 1. 설명서에 따르면 이것은 무엇을 의미합니까?

ERR_NO_RESULT   1       Нет ошибки, но результат неизвестен

start 함수에서 공개적으로 호출되지 않는 경우, 즉 매개변수가 있는 함수를 start 에 직접 입력한 것이 아니라 각 막대에서 호출합니다. 틱 바이 틱이 아니라 오류가 없습니다 ...

내 말은 다음과 같습니다.

 int start()
{
   MovingStopLossToBU();
// Что-то дальше делаем..

왜 그런 겁니까?

그리고 일반적으로 이것이 어떻게 더 능숙하게 구현됩니까? 각 틱의 리소스 측면에서 비용이 많이 듭니까?

 

Всем добрый день.

당신의 도움이 필요합니다. 나는 무엇이 잘못되었는지 이해하지 못한다.

if (OrderStopLoss() != NormalizeDouble(t6,5))

{

a=10;

}

OrderStopLoss()= 1.3017 및 NormalizeDouble(t6,5)=1.3017 조건이 여전히 충족된다는 사실, 즉 a=10입니다. 그리고 그것은 해서는 안됩니다.

이유는 무엇입니까?

 
hoz :

질문은 ~이야. 이런 상황은 이번이 처음이 아닙니다.

각 틱에서 후행 함수 또는 예를 들어 breakeven 함수가 호출되면 오류가 나타납니다. - 1. 설명서에 따르면 이것은 무엇을 의미합니까?

start 함수에서 공개적으로 호출되지 않는 경우, 즉 매개변수가 있는 함수를 start 에 직접 입력한 것이 아니라 각 막대에서 호출합니다. 틱 바이 틱이 아니라 오류가 없습니다 ...

내 말은 다음과 같습니다.

왜 그런 겁니까?

그리고 일반적으로 이것이 어떻게 더 능숙하게 구현됩니까? 각 틱의 리소스 측면에서 비용이 많이 듭니까?

나는 막대가 아니라 많은 핍으로 당신에게 조언 할 것입니다. 필요한 경우 이를 위해 리소스가 사용됩니다. 그리고 이미 존재하는 수정의 대가를 반복하면 "not error" 에러가 뜬다. 따라서 처음에 이미 조언한 대로 차근차근 해야 합니다.
 
hoz :

질문은 ~이야. 이런 상황은 이번이 처음이 아닙니다.

각 틱에서 후행 함수 또는 예를 들어 breakeven 함수가 호출되면 오류가 나타납니다. - 1. 설명서에 따르면 이것은 무엇을 의미합니까?

start 함수에서 공개적으로 호출되지 않는 경우, 즉 매개변수가 있는 함수를 start 에 직접 입력한 것이 아니라 각 막대에서 호출합니다. 틱 바이 틱이 아니라 오류가 없습니다 ...

내 말은 다음과 같습니다.

왜 그런 겁니까?

그리고 일반적으로 이것이 어떻게 더 능숙하게 구현됩니까? 각 틱의 리소스 측면에서 비용이 많이 듭니까?

Thral은 SL을 같은 수준으로 옮기려고 합니다. 수표를 추가해야 합니다. 트롤의 수준은 현재 SL과 달라야 합니다.

 
valeryk :

Thral은 SL을 같은 수준으로 옮기려고 합니다. 수표를 추가해야 합니다. 트롤의 수준은 현재 SL과 달라야 합니다.



그래서 나는 이 사건에 대한 수표를 가지고 있다:

 if (ND(OrderStopLoss() - priceBU * pt) != 0.0 )
{
  if (!OrderModify(OrderTicket(), OrderOpenPrice(), priceBU, OrderTakeProfit(), 0, CLR_NONE ))
  {
    Print ("Ошибка модификации ордера ", OrderType(), " - ", GetLastError());
  }

}
stop - new stop(사용 중)이 0이 아닌 경우... 수정합니다... 그렇지 않은 경우 수정하지 않습니다. 그래서 나는 이것이 어떻게 일어나는지 이해하지 못합니다. 결국, 나는 우리가 과거와 새로운 중지 의 평등에 대한 확인이 필요하다는 것을 이해하고 그것을 했습니다.
 

안녕하세요 ! 말해 주세요. 1 T/P에서 초기 및 마지막 주문을 어떻게 수정합니까? 감사합니다

gi_304 = CountTrades();

   g_price_212 = 0;

   double ld_24 = 0;

   for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

      OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

      if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

      if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

         if (OrderType() == OP_BUY || OrderType() == OP_SELL) {

            g_price_212 += OrderOpenPrice() * OrderLots();

            ld_24 += OrderLots();

         }

      }

   }

   if (gi_304 > 0) g_price_212 = NormalizeDouble(g_price_212 / ld_24, Digits);

   if (gi_332) {

      for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

         OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

         if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

            if (OrderType() == OP_BUY) {

               g_price_180 = g_price_212 + TakeProfit2 * Point;

               gd_unused_196 = g_price_180;

               gd_308 = g_price_212 - Stoploss * Point;

               gi_268 = TRUE;

            }

         }

         if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {

            if (OrderType() == OP_SELL) {

               g_price_180 = g_price_212 - TakeProfit2 * Point;

               gd_unused_204 = g_price_180;

               gd_308 = g_price_212 + Stoploss * Point;

               gi_268 = TRUE;

            }

         }

      }

   }

   if (gi_332) {

      if (gi_268 == TRUE) {

         for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {

            OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);

            if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;

            if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) OrderModify(OrderTicket(), g_price_212, OrderStopLoss(), g_price_180, 0, Yellow);

            gi_332 = FALSE;

         }

      }

   }

   return (0);


 
agat8430 :

안녕하세요 ! 말해 주세요. 1 T/P에서 초기 및 마지막 주문을 어떻게 수정합니까? 감사합니다


해킹처럼 보이지 않도록 이 코드를 수정하세요.