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

 
Andrey Sokolov # :

정말 직접 보지 않습니까?

"이 순간을 어떻게 그릴까?" - 0.01이 많이 표시된 곳은 최소 가용금액을 계산할 필요가 있다.

나는 이것을 본다. 0.02를 만들면 0.02가 많은 주문을 선택합니다. 처음에는 0.01에서, 그 다음에는 0.02로 보이게 하는 방법을 묻습니다.

 
Sergey Gridnev # :
2 사이클이 필요합니다. 처음에는 최소 볼륨을 찾고 두 번째에는 닫습니다. 그리고 닫을 때 주문이 1 위치로 이동하므로 최대 위치에서 0으로 순환해야 합니다.

그리고 최대값에서 0으로 만드는 방법은 무엇입니까?

 
Rustam Bikbulatov # :

처음에는 0.01에서, 그 다음에는 0.02로 보이게 하는 방법을 묻습니다.

당신은 이미 2번 어떻게 대답했습니다.

 
Rustam Bikbulatov # :

나는 이것을 본다. 0.02를 만들면 0.02가 많은 주문을 선택합니다. 처음에는 0.01에서, 그 다음에는 0.02로 보이게 하는 방법을 묻습니다.

2차원 배열로 수집하고 첫 번째 차원에서는 로트를, 두 번째 차원에서는 티켓을 수집합니다. 배열을 정렬하고 지금은 첫 번째 차원에서 최소 로트를 닫습니다. 또는 모든 것을 닫아야하지만 많이 증가할수록 끝이 가까워지면 ...

 
Sergey Gridnev # :
2 사이클이 필요합니다. 처음에는 최소 볼륨을 찾고 두 번째에는 닫습니다. 그리고 닫을 때 주문이 1 위치로 이동 하므로 최대 위치에서 0으로 순환해야 합니다.

아니요. 가장 이른 것부터 최신까지.

 

그들이 말한 것은 나 자신도 알고 있었다. 좋아, 나는 언제나처럼 찌르는 법을 마스터 할거야

 
Rustam Bikbulatov # :

그들이 말한 것은 나 자신도 알고 있었다. 좋아, 나는 언제나처럼 찌르는 법을 마스터 할거야

 //+------------------------------------------------------------------+
//|                                                       Око_01.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        " https://www.mql5.com "
#property version    "1.00"
#property strict
#include <GrosBuch.mqh>
#property script_show_inputs

//input double Max_loss=0; //
extern int N= 6 ;           // Количество ордеров
input int SLpips= 0 ;       // Количество пунктов
//Вычисляем возможное оставшееся количество лотов при N лоссов от оставшихся свободных средств
// Buch bi;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   double PipValue = MarketInfo( NULL , MODE_TICKVALUE),
          min_lot = MarketInfo( NULL , MODE_MINLOT),
          lot_step = MarketInfo( NULL , MODE_LOTSTEP),
          Margin = MarketInfo( Symbol (), MODE_MARGINREQUIRED),
          Max_loss=N*SLpips*PipValue*min_lot,                 //Вычисляем сумму совокупного возможного лосса
          M_m= DBL_MIN ;
   double remains= AccountFreeMargin()-Max_loss;   //Значение свободных средств для открыти ордера Margin*Lots;
   while (remains>Margin*min_lot&&! IsStopped ())   //если они больше,чем необходимо для открытия 1 лота
     {
      min_lot= NormalizeDouble (min_lot+lot_step, 2 );   //добавим минлот
      M_m=Margin*min_lot;                           //получим значени св средств при вычисленном лоте и размере стопа
       // Lots*=min_lot;
       Print ( "remains = " ,remains, " Margin =" ,Margin, " PipValue =" ,PipValue, " N =" ,N, "min_lot =" ,min_lot, " Max_loss =" ,Max_loss, " M-m =" ,M_m);
     }
  }
//+------------------------------------------------------------------+
 

좋은 저녁입니다, 친애하는 전문가 여러분!

한 가지만 도와주세요. 나는 함수의 시작 부분을 작성 중이며 스크립트로 코드의 일부를 확인하기로 결정했습니다.

 //+------------------------------------------------------------------+
//|                                                            3.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link        " https://www.mql5.com "
#property version    "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   /* Создадим запрос на сервер и получим ответ с результатом */
   MqlTradeRequest request= {};
   MqlTradeResult result= { 0 };
   /* запустим цикл для перебора всех установленных отложенных ордеров */
   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--)
     {
       /* определим параметры установленного ордера */
       string symbol= OrderGetString ( ORDER_SYMBOL );                         // символ ордера
       int     digits=( int ) SymbolInfoInteger (symbol, SYMBOL_DIGITS );         // количество знаков после запятой
       double point= SymbolInfoDouble (symbol, SYMBOL_POINT );                 // значение одного пункта
       ulong   ticket= OrderGetTicket (i);                                   // тикет ордера
       ENUM_ORDER_TYPE type=( ENUM_ORDER_TYPE ) OrderGetInteger ( ORDER_TYPE ); // тип ордера
       double volume= OrderGetDouble ( ORDER_VOLUME_INITIAL );                 // объём ордера
       ulong   magic= OrderGetInteger ( ORDER_MAGIC );                         // MagicNumber ордера
       double price_current= OrderGetDouble ( ORDER_PRICE_CURRENT );           // текущая цена по символу ордера
       double price_order_open= OrderGetDouble ( ORDER_PRICE_OPEN );           // цена открытия указанная в ордере
       double sl= OrderGetDouble ( ORDER_SL );                                 // стоп лосс ордера
       double tp= OrderGetDouble ( ORDER_TP );                                 // тейк профит ордера
       /* выведем информацию об установленных отложенных ордерах */
       PrintFormat ( "#%I64u %s  %s  %.2f price_current: %.5f price_order_open: %.5f sl: %.5f tp: %.5f magic: %d" ,
                  ticket,symbol, EnumToString (type),volume,price_current,price_order_open,sl,tp,magic);
     }
  }
//+------------------------------------------------------------------+


그러나 여기에 Experts의 기고문에 인쇄된 결과가 있습니다. 보류 중인 주문 ORDER_TYPE_BUY_STOP의 기호는 반영되지만 어떤 이유로 주문 ORDER_TYPE_SELL_STOP은 반영되지 않습니다.

무엇으로 연결할 수 있습니까? 안부 인사를 전합니다. 블라디미르.



 
MrBrooklin # :

좋은 저녁입니다, 친애하는 전문가 여러분!

한 가지만 도와주세요. 나는 함수의 시작 부분을 작성 중이며 스크립트로 코드의 일부를 확인하기로 결정했습니다.


그러나 여기에 Experts의 기고문에 인쇄된 결과가 있습니다. 보류 중인 주문 ORDER_TYPE_BUY_STOP에는 기호가 반영되어 있지만 어떤 이유로 ORDER_TYPE_SELL_STOP 주문에는 반영되지 않습니다.

무엇으로 연결할 수 있습니까? 안부 인사를 전합니다. 블라디미르.



이것은 티켓을 선택하지 않았지만 그 특성을 얻으려고 하기 때문입니다.
 
Sergey Gridnev # :
이것은 티켓을 선택하지 않았지만 그 특성을 얻으려고 하기 때문입니다.

귀하의 응답에 대해 Sergey에게 감사드립니다! 당신의 대답은 나를 더욱 어리둥절하게 했습니다. 어때요? 스크립트가 실행되면 보류 중인 모든 주문이 폴링됩니다. 사진을 보면 차트에 두 개가 있는 것을 알 수 있는데, 동시에 한 장의 티켓은 선택된 것으로 나타났고, 다른 한 장은 선택되지 않은 것으로 밝혀졌죠? 명확하지 않습니다.

조금 더 설명해주실 수 있나요?

쓸데없는 호기심이 아니라 독학을 계속하기 위해 질문합니다.

안부 인사를 전합니다. 블라디미르.