EA는 시장 주문을 연 다음 수정하고 TP와 SL을 설정합니다. 테스터 확인. 첫 번째 주문은 필요한 매개변수로 수정됩니다. 두 번째 주문은 동일한 방향으로 열리고 첫 번째 주문은 활성화되지만 첫 번째 주문은 두 번째 주문의 매개변수에 따라 수정되고 두 번째 주문은 0 SL 및 TP로 유지됩니다. 동시에 SL == 0 및 TP == 0인 경우 어떤 이유로 인해 수정 중이므로 이러한 표시기가 더 이상 0이 아닌 상태입니다. 왜요? 처음부터 끝까지 반복을 변경해도 아무 것도 변경되지 않습니다.
그리고 더. 테스터의 이익 열에는 두 개의 미결 주문이 있는 경우 주문의 이익이 반대로 표시됩니다. 첫 번째 미결 주문에는 두 번째 주문의 이익이 있고 그 반대의 경우도 마찬가지입니다. 왜요?
그리고 더. 두 극값에 대한 추세선 을 그려야 합니다. 선은 그려지지만 막대에서 막대로 스텁입니다. 이것은 추세선이 아니라 세그먼트일 뿐인데 정확히 그 선을 보고 싶습니다.
void PositionModifiSell()
{
int i;
double sl = 0 ;
double tp = 0 ;
int total = PositionsTotal ();
for (i = total- 1 ; i >= 0 ; i--)
{
if (m_position.SelectByIndex(i))
{
if (m_position. Symbol () == Symbol () && m_position.Magic() == Magic)
{
if (m_position.PositionType() == POSITION_TYPE_SELL )
{
if (m_position.StopLoss() == 0 && m_position.TakeProfit() == 0 )
{
sl = NormalizeDouble ( iHigh ( NULL , 0 , ExtrimUp()) + VS* _Point , _Digits );
if (PriceCurrentDw1() - PriceDwHigh() < LastPriceOpenOrder() - (sp+PW)* _Point )
{
tp = NormalizeDouble (PriceCurrentDw1() - PriceDwHigh(), _Digits );
}
else
tp = NormalizeDouble (bid - TP* _Point , _Digits );
if (!m_trade.PositionModify( _Symbol , sl, tp))
{
Print ( "Метод PositionModify() потерпел поражение. Код возврата = " , m_trade.ResultRetcode(),
". Описание кода: " , m_trade.ResultRetcodeDescription());
}
else
{
Print ( "Метод PositionModify() исполнен успешно. Код возврата = " , m_trade.ResultRetcode(),
" (" , m_trade.ResultRetcodeDescription(), ")" );
}
}
}
}
}
}
}
EA는 시장 주문을 연 다음 수정하고 TP와 SL을 설정합니다. 테스터 확인. 첫 번째 주문은 필요한 매개변수로 수정됩니다. 두 번째 주문은 동일한 방향으로 열리고 첫 번째 주문은 활성화되지만 첫 번째 주문은 두 번째 주문의 매개변수에 따라 수정되고 두 번째 주문은 0 SL 및 TP로 유지됩니다. 동시에 SL == 0 및 TP == 0인 경우 어떤 이유로 수정되고 있으므로 이러한 표시기가 더 이상 0이 아닌 상태입니다. 왜요? 처음부터 끝까지 반복을 변경해도 아무 것도 변경되지 않습니다.
그리고 더. 테스터의 이익 열에서 두 개의 미결 주문이 있는 경우 주문의 이익이 반대 방향으로 표시됩니다. 두 번째 이익은 첫 번째 미결 주문에 대해 표시되고 그 반대의 경우도 마찬가지입니다. 왜요?
그리고 더. 두 극값에 대한 추세선 을 그려야 합니다. 선은 그려지지만 막대에서 막대로 스텁입니다. 이것은 추세선이 아니라 세그먼트일 뿐인데 정확히 그 선을 보고 싶습니다.
1. 주문이 아니라 위치
2. 질문을 공식화하십시오 - 내레이션을 보는 동안 질문과 "작동 방법" 알고리즘을 보지 못했습니다.
Свойства позиций - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
수정 시점에 새 위치가 이미 존재한다고 확신합니까? (거래 요청을 보낸다고 해서 아직 포지션이 있다는 보장은 없습니다).
조건(SL == 0.0 및 TP == 0.0)을 입력할 때 위치 티켓을 인쇄하십시오.
예, 두 번째 위치는 이미 있습니다. 나는 잡지를 읽고 있다. 성공적으로 생성된 판매 방법, 코드 10009. (티켓 #3). 그런 다음 수정은 성공적으로 완료된 티켓 #2가 있는 위치만 따릅니다(수정, 강조하지만 조건에 따라 발생해서는 안 되지만 SL은 더 이상 0이 아닙니다!).
이미 작성, 무화과가 아닌 개장 시간 과 티켓으로 시도하여 이전 위치를 수정합니다. 예를 들어:
void PositionModifiSell()
{
int i;
datetime Time;
double sl = 0 ;
double tp = 0 ;
datetime time = 0 ;
int total = PositionsTotal ();
for (i = total- 1 ; i >= 0 ; i--)
{
if (m_position.SelectByIndex(i))
{
if (m_position. Symbol () == Symbol () && m_position.Magic() == Magic)
{
if (m_position.PositionType() == POSITION_TYPE_SELL )
{
Time = m_position.Time();
if (Time > time)
{
sl = NormalizeDouble ( iHigh ( NULL , 0 , ExtrimUp()) + VS* _Point , _Digits );
if (PriceCurrentDw1() - PriceDwHigh() < LastPriceOpenOrder() - (sp+PW)* _Point )
{
tp = NormalizeDouble (PriceCurrentDw1() - PriceDwHigh(), _Digits );
}
else
tp = NormalizeDouble (bid - TP* _Point , _Digits );
if (!m_trade.PositionModify( _Symbol , sl, tp))
{
Print ( "Метод PositionModify() потерпел поражение. Код возврата = " , m_trade.ResultRetcode(),
". Описание кода: " , m_trade.ResultRetcodeDescription());
}
else
{
Print ( "Метод PositionModify() исполнен успешно. Код возврата = " , m_trade.ResultRetcode(),
" (" , m_trade.ResultRetcodeDescription(), ")" );
}
time = Time;
}
}
}
}
}
}
//------------ илиvoid PositionModifiSell()
{
int i;
ulong Ticket;
double sl = 0 ;
double tp = 0 ;
ulong ticket = 0 ;
int total = PositionsTotal ();
for (i = total- 1 ; i >= 0 ; i--)
{
if (m_position.SelectByIndex(i))
{
if (m_position. Symbol () == Symbol () && m_position.Magic() == Magic)
{
if (m_position.PositionType() == POSITION_TYPE_SELL )
{
Tiсket = m_position.Ticket();
if (ticket != Ticket)
{
sl = NormalizeDouble ( iHigh ( NULL , 0 , ExtrimUp()) + VS* _Point , _Digits );
if (PriceCurrentDw1() - PriceDwHigh() < LastPriceOpenOrder() - (sp+PW)* _Point )
{
tp = NormalizeDouble (PriceCurrentDw1() - PriceDwHigh(), _Digits );
}
else
tp = NormalizeDouble (bid - TP* _Point , _Digits );
if (!m_trade.PositionModify( _Symbol , sl, tp))
{
Print ( "Метод PositionModify() потерпел поражение. Код возврата = " , m_trade.ResultRetcode(),
". Описание кодa: " , m_trade.ResultRetcodeDescription());
}
else
{
Print ( "Метод PositionModify() исполнен успешно. Код возврата = " , m_trade.ResultRetcode(),
" (" , m_trade.ResultRetcodeDescription(), ")" );
}
ticket = Ticket;
}
}
}
}
}
}
Свойства позиций - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
문제는 고문에게 있습니다. 그건 그렇고, 가상 호스팅 dll에 대한 규칙은 금지되어 있습니다.
이전에는 모든 것이 잘 작동했습니다. 무료 호스팅 을 시도했어야 했습니다. 일반적으로 그는 메타쿼터에게 15달러를 주었습니다)))
답변 해주셔서 감사합니다!
EA는 시장 주문을 연 다음 수정하고 TP와 SL을 설정합니다. 테스터 확인. 첫 번째 주문은 필요한 매개변수로 수정됩니다. 두 번째 주문은 동일한 방향으로 열리고 첫 번째 주문은 활성화되지만 첫 번째 주문은 두 번째 주문의 매개변수에 따라 수정되고 두 번째 주문은 0 SL 및 TP로 유지됩니다. 동시에 SL == 0 및 TP == 0인 경우 어떤 이유로 인해 수정 중이므로 이러한 표시기가 더 이상 0이 아닌 상태입니다. 왜요? 처음부터 끝까지 반복을 변경해도 아무 것도 변경되지 않습니다.
그리고 더. 테스터의 이익 열에는 두 개의 미결 주문이 있는 경우 주문의 이익이 반대로 표시됩니다. 첫 번째 미결 주문에는 두 번째 주문의 이익이 있고 그 반대의 경우도 마찬가지입니다. 왜요?
그리고 더. 두 극값에 대한 추세선 을 그려야 합니다. 선은 그려지지만 막대에서 막대로 스텁입니다. 이것은 추세선이 아니라 세그먼트일 뿐인데 정확히 그 선을 보고 싶습니다.
EA는 시장 주문을 연 다음 수정하고 TP와 SL을 설정합니다. 테스터 확인. 첫 번째 주문은 필요한 매개변수로 수정됩니다. 두 번째 주문은 동일한 방향으로 열리고 첫 번째 주문은 활성화되지만 첫 번째 주문은 두 번째 주문의 매개변수에 따라 수정되고 두 번째 주문은 0 SL 및 TP로 유지됩니다. 동시에 SL == 0 및 TP == 0인 경우 어떤 이유로 수정되고 있으므로 이러한 표시기가 더 이상 0이 아닌 상태입니다. 왜요? 처음부터 끝까지 반복을 변경해도 아무 것도 변경되지 않습니다.
그리고 더. 테스터의 이익 열에서 두 개의 미결 주문이 있는 경우 주문의 이익이 반대 방향으로 표시됩니다. 두 번째 이익은 첫 번째 미결 주문에 대해 표시되고 그 반대의 경우도 마찬가지입니다. 왜요?
그리고 더. 두 극값에 대한 추세선 을 그려야 합니다. 선은 그려지지만 막대에서 막대로 스텁입니다. 이것은 추세선이 아니라 세그먼트일 뿐인데 정확히 그 선을 보고 싶습니다.
1. 주문이 아니라 위치
2. 질문을 공식화하십시오 - 내레이션을 보는 동안 질문과 "작동 방법" 알고리즘을 보지 못했습니다.
1. 주문이 아니라 위치
2. 질문을 공식화하십시오 - 내레이션을 보는 동안 질문과 "작동 방법" 알고리즘을 보지 못했습니다.
mql5 언어 이기 때문에 위치가 무엇인지 명확합니다. 그리고 코드에는 위치가 있습니다. 문제는 조건이 다음과 같이 명시되어 있지만 첫 번째 위치가 마지막 위치가 아닌 수정된 이유입니다.
mql5 언어 이기 때문에 위치가 무엇인지 명확합니다. 그리고 코드에는 위치가 있습니다. 문제는 조건이 다음과 같이 명시되어 있지만 첫 번째 위치가 마지막 위치가 아닌 수정된 이유입니다.
질문은 어디에??? 알고리즘을 설명하십시오. "알고리즘이 이런 식으로 ...".
질문은 어디에??? 알고리즘을 설명하십시오. "알고리즘이 이런 식으로 ...".
추세선이 깨지고 막대가 선 위/아래로 닫히면 SL 및 TP가 0인 위치가 열립니다. 개봉 직후에 필요한 TP, SL을 설정(위치 수정). 조건을 위반하면서 마지막 위치가 수정되는 것이 아니라 이전 위치인 이유:
이제 명확해 졌습니까? 조건에 포지션 오픈 시간 을 입력해도 달라지는 것은 없습니다. 포지션 수에는 제한이 없습니다.
추세선이 깨지고 막대가 선 위/아래로 닫히면 SL 및 TP가 0인 위치가 열립니다. 개봉 직후에 필요한 TP, SL을 설정(위치 수정). 조건을 위반하면서 마지막 위치가 수정되는 것이 아니라 이전 위치인 이유:
이제 명확해 졌습니까? 조건에 포지션 오픈 시간 을 입력해도 달라지는 것은 없습니다. 포지션 수에는 제한이 없습니다.
수정 시점에 새 위치가 이미 존재한다고 확신합니까? (거래 요청을 보낸다고 해서 아직 포지션이 있다는 보장은 없습니다).
조건(SL == 0.0 및 TP == 0.0)을 입력할 때 위치 티켓을 인쇄하십시오.
수정 시점에 새 위치가 이미 존재한다고 확신합니까? (거래 요청을 보낸다고 해서 아직 포지션이 있다는 보장은 없습니다).
조건(SL == 0.0 및 TP == 0.0)을 입력할 때 위치 티켓을 인쇄하십시오.
예, 두 번째 위치는 이미 있습니다. 나는 잡지를 읽고 있다. 성공적으로 생성된 판매 방법, 코드 10009. (티켓 #3). 그런 다음 수정은 성공적으로 완료된 티켓 #2가 있는 위치만 따릅니다(수정, 강조하지만 조건에 따라 발생해서는 안 되지만 SL은 더 이상 0이 아닙니다!).
이미 작성, 무화과가 아닌 개장 시간 과 티켓으로 시도하여 이전 위치를 수정합니다. 예를 들어:
예, 두 번째 위치는 이미 있습니다. 나는 잡지를 읽고 있다. 성공적으로 생성된 판매 방법, 코드 10009. (티켓 #3). 그런 다음 수정이 이어지며 티켓 # 2가있는 위치 만 성공적으로 완료되었습니다.
이미 작성, 무화과가 아닌 개장 시간 과 티켓으로 시도하여 이전 위치를 수정합니다. 예를 들어:
즉, 포지션의 출현 결과를 확인하지 않고 티켓을 인쇄하고 싶지도 않습니다. 이 경우 전체 코드를 첨부합니다(버튼을 사용하여 첨부 )
즉, 포지션의 출현 결과를 확인하지 않고 티켓을 인쇄하고 싶지도 않습니다. 이 경우 전체 코드를 첨부합니다(버튼을 사용하여 첨부).
티켓을 인쇄하고 싶지도 않습니다. 이해하지 못했습니다. 다음은 저널 발췌문입니다.
2021.02.01 12:54:55.338 2018.01.02 17:00:00 시장 매도 0.01 EURUSD (1.20384 / 1.20402)
2021.02.01 12:54:55.338 2018.01.02 17:00:00 거래 #2 1.20384에서 0.01 EURUSD 매도 완료(주문 #2 기준)
2021.02.01 12:54:55.338 2018.01.02 17:00:00 거래 수행 [#2 매도 0.01 EURUSD at 1.20384]
2021.02.01 12:54:55.338 2018.01.02 17:00:00 주문이 1.20384에 0.01을 매도 [#2 매도 0.01 EURUSD 1.20384]
2021.02.01 12:54:55.344 2018.01.02 17:00:00 CTrade::OrderSend: 시장 매도 0.01 EURUSD [1.20384에서 완료]
2021.02.01 12:54:55.344 2018.01.02 17:00:00 Sell() 메서드가 성공했습니다. 턴 코드 = 10009(1.20384에서 완료)
2021.02.01 12:54:55.344 2018.01.02 17:00:00 포지션 수정 [#2 매도 0.01 EURUSD 1.20384 sl: 1.20813 tp: 1.20013]
2021.02.01 12:54:55.346 2018.01.02 17:00:00 CTrade::OrderSend: 포지션 #2 EURUSD 수정 (sl: 1.20813, tp: 1.20013) [완료]
2021.02.01 12:54:55.346 2018.01.02 17:00:00 PositionModify() 메서드가 성공했습니다. 턴 코드 = 10009(완료)
===================================================== ==================================================== ======== 분할, 두 번째 위치의 모양
2021.02.01 12:55:48.819 2018.01.03 09:00:00 시장 매도 0.01 EURUSD (1.20442 / 1.20460)
2021.02.01 12:55:48.819 2018.01.03 09:00:00 거래 #3 매도 0.01 EURUSD 1.20442 완료(주문 #3 기준)
2021.02.01 12:55:48.819 2018.01.03 09:00:00 거래 수행 [#3 매도 0.01 EURUSD at 1.20442]
2021.02.01 12:55:48.819 2018.01.03 09:00:00 주문이 1.20442에 0.01 매도 [#3 매도 0.01 EURUSD 1.20442]
2021.02.01 12:55:48.821 2018.01.03 09:00:00 CTrade::OrderSend: 시장 매도 0.01 EURUSD [1.20442에서 완료]
2021.02.01 12:55:48.821 2018.01.03 09:00:00 Sell() 메서드가 성공했습니다. 턴 코드 = 10009(1.20442에서 완료)
==================================================== ===================================================== ================ 성공적으로 열린 위치, 수정, 그러나 이전 순서
2021.02.01 12:55:48.821 2018.01.03 09:00:00 포지션 수정 [#2 매도 0.01 EURUSD 1.20384 sl: 1.20663 tp: 1.20154]
2021.02.01 12:55:48.823 2018.01.03 09:00:00 CTrade::OrderSend: 포지션 #2 EURUSD 수정 (sl: 1.20663, tp: 1.20154) [완료]
2021.02.01 12:55:48.823 2018.01.03 09:00:00 PositionModify() 메서드가 성공했습니다. 턴 코드 = 10009(완료)
Sell에서 옵션과 함께 위치를 수정하기 위한 전체 코드를 게시했습니다.