예, 이상합니다. 파일첨부했는데 확인이 안되네요. 죄책감이 드는. 이제 테스터가 [Invalid stops]라는 줄을 발행하는 코드와 코드에서 발췌한 내용을 모두 첨부합니다. 이 코드에서는 위치를 수정할 때 MqlTradeRequest 구조가 어떻게 작동 하는지 이해하고 싶습니다. 제 경우에는 SAR에서 정류장을 변경할 때. 하지만 테스터의 [Invalid stops] 메시지를 지울 수 없습니다. RTS 스플라이스 도구.
//+------------------------------------------------------------------+//| Модификация Stop Loss открытой позиции |//+------------------------------------------------------------------+//--- объявление запроса и результатаMqlTradeRequest request;
MqlTradeResult result;
int total= PositionsTotal (); // количество открытых позиций Print ( "total = " ,total, " " );
//--- перебор всех открытых позицийfor ( int i= 0 ; i<total; i++)
{
if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
{
//--- параметры ордераulong position_ticket= PositionGetTicket (i); // тикет позицииstring position_symbol= PositionGetString ( POSITION_SYMBOL ); // символ int digits=( int ) SymbolInfoInteger (position_symbol, SYMBOL_DIGITS ); // количество знаков после запятойulong magic= PositionGetInteger ( POSITION_MAGIC ); // MagicNumber позицииif ( PositionSelect (position_symbol)) // если позицию удалось выделить, значит - позиция существует
{
//--- обнуление значений запроса и результатаZeroMemory (request);
ZeroMemory (result);
//--- установка параметров операции
request.action = TRADE_ACTION_SLTP ; // тип торговой операции
request.position = position_ticket; // тикет позиции
request.symbol = position_symbol; // символ
request.sl= STP; // Stop Loss позиции
request.tp = 0 ; // Take Profit позиции//--- отсылаем ордерint number= OrderSend (request,result);
// анализируем код возврата торгового сервераif (result.retcode== 10009 || result.retcode== 10008 ) //Request is completed or order placed
{
Alert ( "Ордер Sell успешно помещен, тикет ордера # " ,result.order, " " );
}
else
{
Alert ( "Запрос на установку ордера Sell не выполнен - код ошибки:" , GetLastError ());
return ;
}
}
}
}
예, 이상합니다. 파일첨부했는데 확인이 안되네요. 죄책감이 드는. 이제 테스터가 [Invalid stops]라는 줄을 발행하는 코드와 코드에서 발췌한 내용을 모두 첨부합니다. 이 코드에서는 위치를 수정할 때 MqlTradeRequest 구조가 어떻게 작동 하는지 이해하고 싶습니다. 제 경우에는 SAR에서 정류장을 변경할 때. 하지만 테스터의 [Invalid stops] 메시지를 지울 수 없습니다. RTS 스플라이스 도구.
언뜻 보기에 이것은 오류를 찾아야 하는 코드가 아닙니다. 여기서는 같은 위치의 3중 선택만이 짜증난다. 너무 많이.
잘못된 정류장에 오류가 있습니다. 아마도 이러한 정류장이 계산되는 곳에서 검색을 시작해야 할 것입니다.
예, 이상합니다. 파일첨부했는데 확인이 안되네요. 죄책감이 드는. 이제 테스터가 [Invalid stops]라는 줄을 발행하는 코드와 코드에서 발췌한 내용을 모두 첨부합니다. 이 코드에서는 위치를 수정할 때 MqlTradeRequest 구조가 어떻게 작동 하는지 이해하고 싶습니다. 제 경우에는 SAR에서 정류장을 변경할 때. 하지만 테스터의 [Invalid stops] 메시지를 지울 수 없습니다. RTS 스플라이스 도구.
완전한 이해를 위해서는 어떤 유형의 계정 헤지 또는 네팅이
계정 유형이 hadge인 경우 브리핑
if ( PositionSelect ( _Symbol )== true ) // есть открытая позиция
우리는 심볼로 포지션을 선택했지만, 당신이 꿈꾸던 포지션이 아닐 수도 있습니다...
ulong position_ticket= PositionGetTicket (i); // тикет позиции
이제 우리는 필요한 위치를 정확히 선택했습니다.
함수는 열린 위치 목록에서 인덱스로 위치 티켓을 반환하고 함수를 사용하여 추가 작업을 위해 이 위치를 자동으로 선택합니다.
그런 다음 원하는 위치를 다시 선택하십시오.
if ( PositionSelect (position_symbol)) // если позицию удалось выделить, значит - позиция существует
그리고 다시, 잘못된 위치가 선택될 확률이 매우 높습니다.
위치의 독립적 표현(ACCOUNT_MARGIN_MODE_RETAIL_HEDGING)을 사용하면 각 기호에 대해 여러 위치를 동시에 열 수 있습니다. 이 경우 PositionSelect는 티켓이 가장 작은 위치를 선택합니다.
이 경우 OrderSend() 함수가 어떻게 동작하는지 확인하려면 이렇게 해서 확인을 해야 하는데, 그대로 하는 것이 좋고, 에러가 사라지지 않았다면 에러 코드 뿐만 아니라 포지션 티켓, 포지션 가격, 새로운 스톱 가격 및 테이크. 최소입니다.
댓글 감사합니다. 네팅 계정 유형. RTS 스플라이스 도구. 그게 모든 어려움입니까? 캐릭터당 하나의 포지션. 당신은 어떤 방법을 선택할 수 있습니다. 당신은 여전히 이 위치에 있을 것입니다. 이것은 보류 중인 주문 이 아닙니다. 그렇죠? 그러므로 나는 여전히 이해하지 못한다 - 무엇이 잘못되었는가 ??? 모든 옵션을 시도했습니다.
댓글 감사합니다. 네팅 계정 유형. RTS 스플라이스 도구. 그게 모든 어려움입니까? 캐릭터당 하나의 포지션. 당신은 어떤 방법을 선택할 수 있습니다. 당신은 여전히 이 위치에 있을 것입니다. 이것은 보류 중인 주문 이 아닙니다. 그렇죠? 그러므로 나는 여전히 이해하지 못한다 - 무엇이 잘못되었는가 ??? 모든 옵션을 시도했습니다.
고맙습니다! 검색했는데 안나오네요...
그런 다음 다음 질문인 25단계를 가정해 보겠습니다. 그런 다음 반올림을 25의 배수로 구성하는 방법에 대해 함수가 있을 수 있습니까?
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfonormalizeprice
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfonormalizeprice
감사합니다. 하지만 저는 표준 거래 라이브러리를 사용하지 않습니다.
코드도 주석도 없습니다.
예, 이상합니다. 파일첨부했는데 확인이 안되네요. 죄책감이 드는. 이제 테스터가 [Invalid stops]라는 줄을 발행하는 코드와 코드에서 발췌한 내용을 모두 첨부합니다. 이 코드에서는 위치를 수정할 때 MqlTradeRequest 구조가 어떻게 작동 하는지 이해하고 싶습니다. 제 경우에는 SAR에서 정류장을 변경할 때. 하지만 테스터의 [Invalid stops] 메시지를 지울 수 없습니다. RTS 스플라이스 도구.
예, 이상합니다. 파일첨부했는데 확인이 안되네요. 죄책감이 드는. 이제 테스터가 [Invalid stops]라는 줄을 발행하는 코드와 코드에서 발췌한 내용을 모두 첨부합니다. 이 코드에서는 위치를 수정할 때 MqlTradeRequest 구조가 어떻게 작동 하는지 이해하고 싶습니다. 제 경우에는 SAR에서 정류장을 변경할 때. 하지만 테스터의 [Invalid stops] 메시지를 지울 수 없습니다. RTS 스플라이스 도구.
언뜻 보기에 이것은 오류를 찾아야 하는 코드가 아닙니다. 여기서는 같은 위치의 3중 선택만이 짜증난다. 너무 많이.
잘못된 정류장에 오류가 있습니다. 아마도 이러한 정류장이 계산되는 곳에서 검색을 시작해야 할 것입니다.
예, 이상합니다. 파일첨부했는데 확인이 안되네요. 죄책감이 드는. 이제 테스터가 [Invalid stops]라는 줄을 발행하는 코드와 코드에서 발췌한 내용을 모두 첨부합니다. 이 코드에서는 위치를 수정할 때 MqlTradeRequest 구조가 어떻게 작동 하는지 이해하고 싶습니다. 제 경우에는 SAR에서 정류장을 변경할 때. 하지만 테스터의 [Invalid stops] 메시지를 지울 수 없습니다. RTS 스플라이스 도구.
완전한 이해를 위해서는 어떤 유형의 계정 헤지 또는 네팅이
계정 유형이 hadge인 경우 브리핑
우리는 심볼로 포지션을 선택했지만, 당신이 꿈꾸던 포지션이 아닐 수도 있습니다...
이제 우리는 필요한 위치를 정확히 선택했습니다.
그런 다음 원하는 위치를 다시 선택하십시오.
그리고 다시, 잘못된 위치가 선택될 확률이 매우 높습니다.
이 경우 OrderSend() 함수가 어떻게 동작하는지 확인하려면 이렇게 해서 확인을 해야 하는데, 그대로 하는 것이 좋고, 에러가 사라지지 않았다면 에러 코드 뿐만 아니라 포지션 티켓, 포지션 가격, 새로운 스톱 가격 및 테이크. 최소입니다.
완전한 이해를 위해서는 어떤 유형의 계정 헤지 또는 네팅이
댓글 감사합니다. 네팅 계정 유형. RTS 스플라이스 도구. 그게 모든 어려움입니까? 캐릭터당 하나의 포지션. 당신은 어떤 방법을 선택할 수 있습니다. 당신은 여전히 이 위치에 있을 것입니다. 이것은 보류 중인 주문 이 아닙니다. 그렇죠? 그러므로 나는 여전히 이해하지 못한다 - 무엇이 잘못되었는가 ??? 모든 옵션을 시도했습니다.
댓글 감사합니다. 네팅 계정 유형. RTS 스플라이스 도구. 그게 모든 어려움입니까? 캐릭터당 하나의 포지션. 당신은 어떤 방법을 선택할 수 있습니다. 당신은 여전히 이 위치에 있을 것입니다. 이것은 보류 중인 주문 이 아닙니다. 그렇죠? 그러므로 나는 여전히 이해하지 못한다 - 무엇이 잘못되었는가 ??? 모든 옵션을 시도했습니다.
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
초보자의 질문 MQL5 MT5 MetaTrader 5
알렉세이 빅토 로프 , 2017.11.22 09:29
이 경우 OrderSend() 함수가 어떻게 동작하는지 확인하려면 이렇게 해서 확인해야 하는데, 그대로 하는 것이 좋고, 에러가 사라지지 않았다면 에러 코드 뿐만 아니라 포지션 티켓, 포지션 가격, 새로운 스톱 가격 및 테이크. 최소입니다.
그러므로 나는 여전히 이해하지 못한다 - 무엇이 잘못되었는가 ??? 모든 옵션을 시도했습니다.
오류가 발생한 곳에 이 줄을 붙여넣습니다.
Print (ToString(request) + ToString(result));
거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼
mql5 언어의 특징, 미묘함 및 작업 방법
fxsaber , 2017.02.25 16:27
MqlTrade 구조를 문자열로 변환#define TOSTRING2(A) #A + " = " + EnumToString (A) + " (" + ( string )(A) + ")\n"
string ToString( const MqlTradeTransaction &Trans )
{
return (TOSTRING(Trans.deal) + TOSTRING(Trans.order) + TOSTRING(Trans.symbol) +
TOSTRING2(Trans.type) + TOSTRING2(Trans.order_type) + TOSTRING2(Trans.order_state) +
TOSTRING2(Trans.deal_type) + TOSTRING2(Trans.time_type) +
TOSTRING(Trans.time_expiration) + TOSTRING(Trans.price) + TOSTRING(Trans.price_trigger) +
TOSTRING(Trans.price_sl) + TOSTRING(Trans.price_tp) + TOSTRING(Trans.volume) +
TOSTRING(Trans.position) + TOSTRING(Trans.position_by));
}
string ToString( const MqlTradeRequest &Request )
{
return (TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) +
TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) +
TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) + TOSTRING(Request.tp) +
TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) +
TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) +
TOSTRING(Request.position) + TOSTRING(Request.position_by));
}
string ToString( const MqlTradeResult &Result )
{
return (TOSTRING(Result.retcode) + TOSTRING(Result.deal) + TOSTRING(Result.order) +
TOSTRING(Result.volume) + TOSTRING(Result.price) + TOSTRING(Result.bid) +
TOSTRING(Result.ask) + TOSTRING(Result.comment) + TOSTRING(Result.request_id) +
TOSTRING(Result.retcode_external));
}
#undef TOSTRING
#undef TOSTRING2
오류가 발생한 곳에 이 줄을 붙여넣습니다.
삽입됨. 테스트 결과는 다음과 같습니다.
2017.11.22 18:22:51.127 2016.11.09 12:00:00 교환 매수 1.00 RTS Splice at 98080 sl: 94130 (98070 / 98080 / 98070)
2017.11.22 18:22:51.127 2016.11.09 12:00:00 거래 #4 98080에서 1.00 RTS Splice 구매 완료(주문 #4 기준)
2017.11.22 18:22:51.127 2016.11.09 12:00:00 거래 성사 [#4 1.00 RTS Splice at 98080]
2017.11.22 18:22:51.127 2016.11.09 12:00:00 주문이 98080에서 1.00을 구매했습니다 [#4 98080에서 1.00 RTS Splice 구매]
2017.11.22 18:22:53.561 2016.11.09 14:05:00 수정 #4 실패 1.00 RTS Splice sl: 94130, tp: 0 -> sl: 94316, tp: 0 [잘못된 정류장]
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.action = TRADE_ACTION_SLTP (6)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.magic = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.order = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.symbol = RTS Splice
2017.11.22 18:22:53.576 2016.11.09 14:05:00 요청 볼륨 = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 요청 가격 = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.stoplimit = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.sl = 94316.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.tp = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 요청.편차 = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 요청 유형 = ORDER_TYPE_BUY(0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type_filling = ORDER_FILLING_FOK (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type_time = ORDER_TIME_GTC(0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 요청.만료 = 1970.01.01 00:00:00
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.comment =
2017.11.22 18:22:53.576 2016.11.09 14:05:00 요청 포지션 = 4
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.position_by = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.retcode = 10016
2017.11.22 18:22:53.576 2016.11.09 14:05:00 결과.거래 = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.order = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 결과.볼륨 = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 결과.가격 = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.bid = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.ask = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.comment = 잘못된 정류장
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.request_id = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.retcode_external = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 경고: TP 및 SL에 의한 위치 수정 오류 오류 코드: 4756
삽입됨. 다음은 테스터의 결과입니다.
서버 및 테스터 모드?