오늘 나는 이해할 수 없지만 이미 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 보류 주문을 설정한 차트에서 이 스크립트를 실행하려고 했을 때였습니다(비록 다른 유형의 보류 주문에서도 같은 일이 발생하지만). 그리고 무슨 일이? 그러나 아무 일도 일어나지 않습니다! 보류 중인 주문의 수정 사항이 표시되지 않습니다. 내가 뭔가를 이해하지 못하는 건 아닐까?
Forex에는 최종 가격이 없습니다.
그리고 해결책은 이것입니다.아마도 그런 쓰레기 일 것입니다))
차트 표시의 모든 속성을 원하는 대로 설정하고 템플릿에 default.tpl로 저장합니다.
그것을하는 방법?
이 마지막 가격 라인이 추가 된 이유가 전혀 이해되지 않습니다. 실용적인 의미에서 의미가 없습니다.
그것을하는 방법?
차트의 RMB -> 템플릿 -> 템플릿 저장
파일명: default.tpl
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론
브루클린 씨 , 2022.02.25 07:15
좋은 아침입니다 친애하는 전문가 여러분!
오늘 나는 이해할 수 없지만 이미 MQL5 참조에서 완전히 가져온 코드에서 두 번 더 만났습니다. 이번에는 아무 것도 쓰지 않고 기성품의 예만 들었습니다.
MQL5 참조 / 상수, 열거 및 구조 / 데이터 구조 / 거래 요청 구조 를 엽니다. 거기에서 나는 다음을 발견합니다.
거래 요청 구조이것은 분명합니다. 그리고 다음 코드가 있는 예가 있습니다.
노란색으로 강조 표시된 선을 이해하려고 합니다. 질문이 즉시 제기 되었습니다. 예가 보류 중인 주문과 관련된 경우 PositionGetDouble ( POSITION_PRICE_OPEN )이 그것과 무슨 관련이 있습니까? 아마도 다음과 같은 줄이 있어야 합니다.
전문가 탭에서는 다음 항목만 찾습니다. 친애하는 전문가 여러분, 이 예제를 이해하는 데 도움을 주십시오. 디렉토리에 있는데 코드가 작동하지 않는 이유는 무엇입니까?
안부 인사를 전합니다. 블라디미르.
안녕하세요. 카드 로 보증금을 인출하는 방법을 알려주세요.
거래 플랫폼 개발자의 웹사이트입니다. 이것은 브로커가 아니며 DC가 아니며 실제 거래 계정이 없습니다.
페이지 하단에는 다음과 같이 명확하게 표시되어 있습니다 .
귀하의 거래 계좌로 돈을 이체한 대상 중개인에게 그러한 질문을 하십시오.
안녕하세요. 카드 로 보증금을 인출하는 방법을 알려주세요.
친애하는 개발자 여러분! 과부하(T* const Ptr)가 두 번째 및 세 번째 호출에서 수행되고(T* & Ptr) 수행되지 않는 이유는 무엇입니까?
이것은 버그입니까 기능입니까? b3213.
차트의 RMB -> 템플릿 -> 템플릿 저장
파일명: default.tpl
이 템플릿은 기본적으로 사용 가능합니다. 나는 그것을 교체했다. 도움이 되지 않았습니다. 전환하거나 전환할 때 모든 것이 동일하게 유지되었습니다.
개발자로서 글을 쓸 줄 아세요? 확실히 그들은 이미 이것에 대해 수백 번 통보를 받았습니다. 글쎄, 나는 다시 쓸 것입니다.
스크롤할 때 신호의 캡이