귀하의 응답에 대해 Sergey에게 감사드립니다! 당신의 대답은 나를 더욱 어리둥절하게 했습니다. 어때요? 스크립트가 실행되면 보류 중인 모든 주문이 폴링됩니다. 사진을 보면 차트에 두 개가 있는 것을 알 수 있는데, 동시에 한 장의 티켓은 선택된 것으로 나타났고, 다른 한 장은 선택되지 않은 것으로 밝혀졌죠? 명확하지 않습니다.
조금 더 설명해주실 수 있나요?
쓸데없는 호기심이 아니라 독학을 계속하기 위해 질문합니다.
안부 인사를 전합니다. 블라디미르.
여기에 반복자 i를 최대 인덱스에서 0으로 변경하는 루프가 있습니다. 내부에서는 어떤 일이 발생합니까? 그리고 여기 문제가 있습니다. 첫 번째 명령으로 ORDER_SYMBOL 매개변수를 얻으려고 합니다. 그런데 아래 세 줄로 주문이 선택되기 때문에 어떤 주문에서 가져오려고 하십니까?
Sergey Gridnev # : 여기에 반복자 i를 최대 인덱스에서 0으로 변경하는 루프가 있습니다. 내부에서는 어떤 일이 발생합니까? 그리고 여기 문제가 있습니다. 첫 번째 명령으로 ORDER_SYMBOL 매개변수를 얻으려고 합니다. 그런데 아래 세 줄로 주문이 선택되기 때문에 어떤 주문에서 가져오려고 하십니까?
Sergey, 매우 자세하고 이해하기 쉬운 설명에 감사드립니다! 나는 주기가 시작된 직후에 보류 중인 주문 티켓으로 줄을 섰고 모든 것이 잘 되었습니다.
예-아-아 ... 마음챙김과 다시 한 번 주의. 내가 놓치고 있는 것이 바로 그것이다. 다시 감사합니다!
오늘 나는 이해할 수 없지만 이미 MQL5 참조에서 완전히 가져온 코드에서 두 번 더 만났습니다. 이번에는 아무 것도 쓰지 않고 기성품의 예만 들었습니다.
MQL5 참조 / 상수, 열거 및 구조 / 데이터 구조 / 거래 요청 구조 를 엽니다. 거기에서 나는 다음을 발견합니다.
거래 요청 구조
Modify Pending Order
Торговый приказ на модификацию уровней цен отложенного ордера. Требуется указание 7 полей:
action
order
price
sl
tp
type_time
expiration
Пример торговой операции TRADE_ACTION_MODIFY для модификации уровней цен отложенного ордера:
이것은 분명합니다. 그리고 다음 코드가 있는 예가 있습니다.
#define EXPERT_MAGIC 123456// MagicNumber эксперта//+------------------------------------------------------------------+//| Модификация отложенных ордеров |//+------------------------------------------------------------------+voidOnStart ()
{
//-- объявление и инициализация запроса и результатаMqlTradeRequest request={};
MqlTradeResult result={};
int total= OrdersTotal (); // количество установленных отложенных ордеров//--- перебор всех установленных отложенных ордеровfor ( int i= 0 ; i<total; i++)
{
//--- параметры ордераulong order_ticket= OrderGetTicket (i); // тикет ордераstring order_symbol= Symbol (); // символint digits=( int ) SymbolInfoInteger (order_symbol, SYMBOL_DIGITS ); // количество знаков после запятойulong magic= OrderGetInteger ( ORDER_MAGIC ); // MagicNumber ордераdouble volume= OrderGetDouble ( ORDER_VOLUME_CURRENT ); // текущий объем ордераdouble sl= OrderGetDouble ( ORDER_SL ); // текущий Stop Loss ордераdouble tp= OrderGetDouble ( ORDER_TP ); // текущий Take Profit ордераENUM_ORDER_TYPE type=( ENUM_ORDER_TYPE ) OrderGetInteger ( ORDER_TYPE ); // тип ордераint offset = 50 ; // отступ от текущей цены для установки ордера, в пунктахdouble price; // цена срабатывания ордераdouble point= SymbolInfoDouble (order_symbol, SYMBOL_POINT ); // размер пункта//--- вывод информации об ордереPrintFormat ( "#%I64u %s %s %.2f %s sl: %s tp: %s [%I64d]" ,
order_ticket,
order_symbol,
EnumToString (type),
volume,
DoubleToString ( PositionGetDouble ( POSITION_PRICE_OPEN ),digits),DoubleToString (sl,digits),
DoubleToString (tp,digits),
magic);
//--- если MagicNumber совпадает, Stop Loss и Take Profit не заданыif (magic==EXPERT_MAGIC && sl== 0 && tp== 0 )
{
request.action= TRADE_ACTION_MODIFY ; // тип торговой операции
request.order = OrderGetTicket (i); // тикет ордера
request.symbol = Symbol (); // символ
request.deviation= 5 ; // допустимое отклонение от цены//--- установка уровня цены, тейк-профит и стоп-лосс ордера в зависимости от его типаif (type== ORDER_TYPE_BUY_LIMIT )
{
price = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )-offset*point;
request.tp = NormalizeDouble (price+offset*point,digits);
request.sl = NormalizeDouble (price-offset*point,digits);
request.price = NormalizeDouble (price,digits); // нормализованная цена открытия
}
elseif (type== ORDER_TYPE_SELL_LIMIT )
{
price = SymbolInfoDouble ( Symbol (), SYMBOL_BID )+offset*point;
request.tp = NormalizeDouble (price-offset*point,digits);
request.sl = NormalizeDouble (price+offset*point,digits);
request.price = NormalizeDouble (price,digits); // нормализованная цена открытия
}
elseif (type== ORDER_TYPE_BUY_STOP )
{
price = SymbolInfoDouble ( Symbol (), SYMBOL_ASK )+offset*point;
request.tp = NormalizeDouble (price+offset*point,digits);
request.sl = NormalizeDouble (price-offset*point,digits);
request.price = NormalizeDouble (price,digits); // нормализованная цена открытия
}
elseif (type== ORDER_TYPE_SELL_STOP )
{
price = SymbolInfoDouble ( Symbol (), SYMBOL_BID )-offset*point;
request.tp = NormalizeDouble (price-offset*point,digits);
request.sl = NormalizeDouble (price+offset*point,digits);
request.price = NormalizeDouble (price,digits); // нормализованная цена открытия
}
//--- отправка запросаif (! OrderSend (request,result))
PrintFormat ( "OrderSend error %d" , GetLastError ()); // если отправить запрос не удалось, вывести код ошибки//--- информация об операции PrintFormat ( "retcode=%u deal=%I64u order=%I64u" ,result.retcode,result.deal,result.order);
//--- обнуление значений запроса и результатаZeroMemory (request);
ZeroMemory (result);
}
}
}
//+------------------------------------------------------------------+
노란색으로 강조 표시된 선을 이해하려고 합니다. 질문이 즉시 제기 되었습니다. 예가 보류 중인 주문과 관련된 경우PositionGetDouble(POSITION_PRICE_OPEN )이 그것과 무슨 관련이 있습니까? 아마도 다음과 같은 줄이 있어야 합니다.
이것이 첫 번째 순간입니다. 두 번째 순간은 내가 BUY_STOP 보류 주문을 설정한 차트에서 이 스크립트를 실행하려고 했을 때였습니다(비록 다른 유형의 보류 주문에서도 같은 일이 발생하지만). 그리고 무슨 일이? 그러나 아무 일도 일어나지 않습니다! 보류 중인 주문의 수정 사항이 표시되지 않습니다. 내가 뭔가를 이해하지 못하는 건 아닐까?
Типы торговых операций - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
귀하의 응답에 대해 Sergey에게 감사드립니다! 당신의 대답은 나를 더욱 어리둥절하게 했습니다. 어때요? 스크립트가 실행되면 보류 중인 모든 주문이 폴링됩니다. 사진을 보면 차트에 두 개가 있는 것을 알 수 있는데, 동시에 한 장의 티켓은 선택된 것으로 나타났고, 다른 한 장은 선택되지 않은 것으로 밝혀졌죠? 명확하지 않습니다.
조금 더 설명해주실 수 있나요?
쓸데없는 호기심이 아니라 독학을 계속하기 위해 질문합니다.
안부 인사를 전합니다. 블라디미르.
여기에 반복자 i를 최대 인덱스에서 0으로 변경하는 루프가 있습니다. 내부에서는 어떤 일이 발생합니까? 그리고 여기 문제가 있습니다. 첫 번째 명령으로 ORDER_SYMBOL 매개변수를 얻으려고 합니다. 그런데 아래 세 줄로 주문이 선택되기 때문에 어떤 주문에서 가져오려고 하십니까?
Sergey, 매우 자세하고 이해하기 쉬운 설명에 감사드립니다! 나는 주기가 시작된 직후에 보류 중인 주문 티켓으로 줄을 섰고 모든 것이 잘 되었습니다.
예-아-아 ... 마음챙김과 다시 한 번 주의. 내가 놓치고 있는 것이 바로 그것이다. 다시 감사합니다!
안부 인사를 전합니다. 블라디미르.
좋은 아침입니다 친애하는 전문가 여러분!
오늘 나는 이해할 수 없지만 이미 MQL5 참조에서 완전히 가져온 코드에서 두 번 더 만났습니다. 이번에는 아무 것도 쓰지 않고 기성품의 예만 들었습니다.
MQL5 참조 / 상수, 열거 및 구조 / 데이터 구조 / 거래 요청 구조 를 엽니다. 거기에서 나는 다음을 발견합니다.
거래 요청 구조이것은 분명합니다. 그리고 다음 코드가 있는 예가 있습니다.
노란색으로 강조 표시된 선을 이해하려고 합니다. 질문이 즉시 제기 되었습니다. 예가 보류 중인 주문과 관련된 경우 PositionGetDouble ( POSITION_PRICE_OPEN )이 그것과 무슨 관련이 있습니까? 아마도 다음과 같은 줄이 있어야 합니다.
전문가 탭에서는 다음 항목만 찾습니다. 친애하는 전문가 여러분, 이 예제를 이해하는 데 도움을 주십시오. 디렉토리에 있는데 코드가 작동하지 않는 이유는 무엇입니까?
안부 인사를 전합니다. 블라디미르.
친애하는 전문가 여러분, 이 예제를 이해하는 데 도움을 주십시오. 디렉토리에 있는데 코드가 작동하지 않는 이유는 무엇입니까?
안부 인사를 전합니다. 블라디미르.
몇 페이지 전에 이미 이에 대해 썼습니다.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론
알렉세이 빅토 로프 , 2022.02.20 10:24
사샤, 문서의 예나 어린 양의 예를 사용하는 것보다 더 나쁜 것은 생각할 수 없습니다 . 게다가 어딘가에서 while 루프의 강제 종료 플래그를 잃어버렸습니다. 일반적으로 ... 단어가 없습니다.몇 페이지 전에 이미 이에 대해 썼습니다.
안녕하세요 알렉세이입니다!
그런 진지한 회사가 디렉토리에 대해 진지하지 않은 태도를 가지고 있다는 것은 매우 슬픈 일입니다.
안부 인사를 전합니다. 블라디미르.
안녕하세요 알렉세이입니다!
그런 진지한 회사가 디렉토리에 대해 진지하지 않은 태도를 가지고 있다는 것은 매우 슬픈 일입니다.
안부 인사를 전합니다. 블라디미르.
이 예에는 또 다른 오류가 있습니다. 아니면 완전히 눈이 멀거나...
나열된 필수 필드 중 만료가 있지만 예제 코드에서는 만료가 할당된 위치가 표시되지 않습니다. 대신 가격에서 허용 가능한 편차가 할당됩니다.
이 예에는 또 다른 오류가 있습니다. 아니면 완전히 눈이 멀거나...
나열된 필수 필드 중 만료가 있지만 예제 코드에서는 만료가 할당된 위치가 표시되지 않습니다. 대신 가격에서 허용 가능한 편차가 할당됩니다.
또한 만료 (만료 시간) 외에도 다음이 있어야 합니다.
안부 인사를 전합니다. 블라디미르.
또한 만료 (만료 시간) 외에도 다음이 있어야 합니다.
안부 인사를 전합니다. 블라디미르.
나는 중재자와 동시에 이 스레드의 주최자인 Artyom Trishkin에게 호소합니다!
MQL5 참조와 관련된 모든 질문을 MQL로 보낼 수 있습니까?
어렵지 않다면 최소한 이 페이지 는 업데이트할 수 있습니까?
안부 인사를 전합니다. 블라디미르.나는 중재자와 동시에 이 스레드의 주최자인 Artyom Trishkin에게 호소합니다!
MQL5 참조와 관련된 모든 질문을 MQL로 보낼 수 있습니까?
어렵지 않다면 최소한 이 페이지 는 업데이트할 수 있습니까?
안부 인사를 전합니다. 블라디미르.이 스레드에서 보고할 수도 있습니다.
이 스레드에서 보고할 수도 있습니다.
팁 감사합니다, Alex! 먼저 이 스레드에서 답변을 기다리겠습니다. 하지만 침묵이 흐른다면 오류, 버그, 질문 주제로 넘어가겠습니다.
안부 인사를 전합니다. 블라디미르.