정류장과 테이크가 없습니다. 발이 올바르지 않다는 오류 130이 로그에 기록됩니다. 이유를 알 수 없습니다.
그리고 그들은하지 않을 것입니다!
double sl = 0 , tp = 0 ; // тут присвоили по нулямfor ( int i=total; i>= 0 ; i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true ) // Если ордер есть и он выбран..
{
if (g_type == OP_BUY)
{
if (i_sl != 0 ) // замените на if(sl == 0) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble (OrderOpenPrice() - SL*pt, Digits ); // Если по нулям, тогда выполнится условие!
double sl = 0 , tp = 0 ; // тут присвоили по нулямfor ( int i=total; i>= 0 ; i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true ) // Если ордер есть и он выбран..
{
if (g_type == OP_BUY)
{
if (i_sl != 0 ) // замените на if(sl == 0) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble (OrderOpenPrice() - SL*pt, Digits ); // Если по нулям, тогда выполнится условие!
글쎄, 논리는 어디에 있습니까? 나는 매우 이해하고 싶습니다 .. 기능이 있습니다 :
void OrdersModifying()
{
int total = OrdersTotal () - 1 ;
double sl = 0 , tp = 0 ;
for ( int i=total; i>= 0 ; i--)
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true ) // Если ордер есть и он выбран..
{
if (g_type == OP_BUY)
{
if (i_sl != 0 ) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble (OrderOpenPrice() - i_sl*pt, Digits ); // Получаем значение стоп-лосса для выбранного ордераif (i_tp != 0 ) // Если входной параметр тейкпрофита не равен 0, то..
tp = NormalizeDouble (OrderOpenPrice() + i_tp*pt, Digits ); // Получаем значение тейкпрофита для выбранного ордера
}
if (g_type == OP_SELL)
{
if (i_sl != 0 ) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble (OrderOpenPrice() + i_sl*pt, Digits ); // Получаем значение стоп-лосса для выбранного ордераif (i_tp != 0 ) // Если входной параметр тейкпрофита не равен 0, то..
tp = NormalizeDouble (OrderOpenPrice() - i_tp*pt, Digits ); // Получаем значение тейкпрофита для выбранного ордера
}
if (sl != 0 || tp != 0 ) // Если полученные значения sl и tp не равныы 0, то..
{
OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400 ,Lime); // Модифицируем ордер
}
}
}
}
순서는 입문서인 경우입니다. stop 및 take의 외부 변수는 i_sl 이고 i_tp 는 0이 아닙니다. 그러면 이미 주문된 stop 및 take 가격을 구하고 이들은 sl 및 tp 입니다. 그런 다음 여기에서 sl및tp 를 계산했는지 확인합니다 (짧은 경우).
if (i_sl != 0 ) // Если входной параметр стоп-лосса не равен 0, то..
sl = NormalizeDouble (OrderOpenPrice() + i_sl*pt, Digits ); // Получаем значение стоп-лосса для выбранного ордераif (i_tp != 0 ) // Если входной параметр тейкпрофита не равен 0, то..
tp = NormalizeDouble (OrderOpenPrice() - i_tp*pt, Digits ); // Получаем значение тейкпрофита для выбранного ордера
}
값을 얻으면 0이 될 수 없습니다 .. 변경될 것이기 때문입니다! 이것들은 코드 컨텍스트에서 순차적으로 얻는 변수입니다.
그리고 여기서 stop과 take 값을 찾았는지 확인했습니다. 모든 조건 후에 어떻게 0이 될 수 있습니까?
if (sl != 0 || tp != 0 ) // Если полученные значения sl и tp не равныы 0, то..
{
OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400 ,Lime); // Модифицируем ордер
}
Symbol() MT4 관련 문제:
설명할 2가지 기능:
첫 번째를 실행하면 빈 문자열이 출력됩니다.
다음은 두 번째 함수 문자열 식별자 "EURUSD"입니다(차트에 따라 다르지만 출력은 함수 논리에 따라 빈 문자열이 있어야 함).
무엇이 잘못되었는지 이해하도록 도와주시겠습니까? 감사해요
변수를 선언할 때 예약된 이름(값)을 사용할 수 없습니다. _value를 호출하세요.
내가 한 일은 다음과 같습니다.
정류장과 테이크가 없습니다. 발이 올바르지 않다는 오류 130이 로그에 기록됩니다. 이유를 알 수 없습니다.
그리고 그들은하지 않을 것입니다!
비탈리 님 말씀대로 해봤는데 달라진게 없네요. 분명히 잼은 다른 곳에 묻혔습니다.
그 전에는 모든 것이 나에게 효과가 있었고(주문 개시 - 미리 결정된 가격 수준에 도달한 후 사용으로 수정 및 전환) 모든 것이 효과가 있었습니다. 다음과 같았습니다.
이제 모든 것을 특정 특수 기능으로 분해하면서 모든 것이 완벽하게 작동하지 않게 되었습니다. 그래서 이미 시도했지만 아무 것도 나오지 않습니다. 정류장이 배치되지 않습니다.
그리고 그들은하지 않을 것입니다!
글쎄, 논리는 어디에 있습니까? 나는 매우 이해하고 싶습니다 .. 기능이 있습니다 :
순서는 입문서인 경우입니다. stop 및 take의 외부 변수는 i_sl 이고 i_tp 는 0이 아닙니다. 그러면 이미 주문된 stop 및 take 가격을 구하고 이들은 sl 및 tp 입니다. 그런 다음 여기에서 sl 및 tp 를 계산했는지 확인합니다 (짧은 경우).
값을 얻으면 0이 될 수 없습니다 .. 변경될 것이기 때문입니다! 이것들은 코드 컨텍스트에서 순차적으로 얻는 변수입니다.
그리고 여기서 stop과 take 값을 찾았는지 확인했습니다. 모든 조건 후에 어떻게 0이 될 수 있습니까?
먼저 시작할 때 논리를 빌드한 다음 함수, 파일 등을 만듭니다.
오른쪽 귀 뒤에 왼손으로 왜 긁는거야?!
내 기능은 매개변수 선언으로 시작됩니다. Kim을 참조하십시오!
내 기능은 매개변수 선언으로 시작됩니다. Kim을 참조하십시오!
그게 날 위한거야?
글쎄, 논리는 어디에 있습니까? 나는 매우 이해하고 싶습니다 .. 기능이 있습니다 :
순서는 입문서인 경우입니다. stop 및 take의 외부 변수는 i_sl 이고 i_tp 는 0이 아닙니다. 그러면 이미 주문된 stop 및 take 가격을 구하고 이들은 sl 및 tp 입니다. 그런 다음 여기에서 sl 및 tp 를 계산했는지 확인합니다 (짧은 경우).
값을 얻으면 0이 될 수 없습니다 .. 변경될 것이기 때문입니다! 이것들은 코드 컨텍스트에서 순차적으로 얻는 변수입니다.
그리고 여기서 stop과 take 값을 찾았는지 확인했습니다. 모든 조건 후에 어떻게 0이 될 수 있습니까?
젠장, if (g_type == OP_BUY)가 아니라 if ( OrderType( ) = = OP_BUY || 주문 유형( ) == OP_BUY 중지 || OrderType( ) = = OP_BUY LIMIT ) 어떤 주문을 열었는지 기억하지 못합니다.
그게 날 위한거야?
젠장, if (g_type == OP_BUY)가 아니라 if ( OrderType( ) = = OP_BUY || 주문 유형( ) == OP_BUY 중지 || OrderType( ) = = OP_BUY LIMIT ) 어떤 주문을 열었는지 기억하지 못합니다.