정말 감사합니다! 나는 양초의 특성(더 많이, 더 적게 등)을 비교하기 위해 이것을 필요로 했습니다. 나사를 조이고 작동합니다. 나는 그가 어떻게 문자열 데이터 유형을 그런 식으로 비교하는지 이해할 수 없습니까? 또는 double to string은 숫자를 문자열로 변환하지 않습니까? :-디
추신. 인디케이터에서는 안되고 스크립트에서만... 문제는 차트의 프로그램에서는 막대 특성이 소수점 5자리로 전송되는데 High[i]를 호출하면 소수점 4자리만 나온다는 것입니다. 밖으로.
쓰기:
Alert("doubletostr 높음 = ", DoubleToStr(높음[1],5)); if (DoubleToStr(High[2],5)>(DoubleToStr(High[3],5))) { Alert("더 보기"); } if (DoubleToStr(High[2],5)<(DoubleToStr(High[3],5))) { Alert("덜");
}
쟁기는 결과를 다섯 자리로 쓰고 더 많거나 적게 계산합니다. 문제는 지표의 문자열 배열이 차트에 표시되지 않는다는 것입니다. 그래서...
저는 마지막 시장 위치가 이익으로 마감된 경우 True 를 반환하고 손실로 마감되지 않은 경우 False 를 반환해야 하는 함수를 작업 중입니다. 이 함수가 True 를 반환하면 모든 포지션이 닫힙니다(이연 및 시장 포지션 모두).
다음은 일어난 일입니다.
//+-------------------------------------------------------------------------------------+//| Получаем состояние последней позиции (Открыта или закрыта) |//+-------------------------------------------------------------------------------------+bool isCloseByTakeLastOpenPos( int delta)
{
datetime lastOrderCloseTime = 0 , // Время закрытия последнего открытого ордера
lastOOTHist = - 1 ; // Время открытия последнего открытого ордера из историиfor ( int i=OrdersHistoryTotal()- 1 ; i>= 0 ; i--)
{
if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) continue ;
if (OrderMagicNumber() != i_magic) continue ;
if (OrderSymbol() != Symbol ()) continue ;
if (OrderType() > 1 ) continue ; // Все удалённые отложки нас не интересуют..if (lastOrderCloseTime < OrderCloseTime()) // Находим время закрытия..
{
lastOrderCloseTime = OrderCloseTime(); // ..последней закрытой позиции в историиint j = i;
}
}
if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderProfit() + OrderCommission() + OrderSwap() <= 0 ) return ( false );
if ( MathAbs (OrderProfit() - OrderClosePrice()) > delta * pt) return ( false );
else
{
lastOOTHist = OrderOpenTime();
Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);
}
}
else
{
// Comment("FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории");Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
return ( false );
}
for ( int h= OrdersTotal ()- 1 ; h>= 0 ; h--)
{
if ( OrderSelect (h, SELECT_BY_POS, MODE_TRADES))
{
if (OrderMagicNumber() != i_magic) continue ;
if (OrderSymbol() != Symbol ()) continue ;
if (OrderType() > 1 ) continue ;
if (lastOOTHist < OrderOpenTime()) return ( false ); // Выбранная рыночная позиция открыта позже закрытой по тейку
}
else { Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать рыночный ордер" ); return ( false );}
}
return ( true );
}
Artyom 은 내가 잼이 있는 곳을 위에서 제안했습니다. 나는 나 자신을 위해 다시 썼다. 지금까지 최종 버전은 아니지만 .. 이미 꽤 명확합니다. 어드바이저를 실행한 후, 나는 나머지 포지션이 클로즈되지 않았기 때문에 클로즈되지 않았다는 것을 즉시 발견했습니다. 그 이유가 무엇인지 궁금해지기 시작했습니다. 함수에서 몇 곳을 주석 처리했고 이 블록에서 다음과 같은 사실을 깨달았습니다.
if ( OrderSelect (j, SELECT_BY_POS, MODE_HISTORY))
{
if (OrderProfit() + OrderCommission() + OrderSwap() <= 0 ) return ( false );
if ( MathAbs (OrderProfit() - OrderClosePrice()) > delta * pt) return ( false );
else
{
lastOOTHist = OrderOpenTime();
Comment ( "FUNC isCloseByTakeLastOpenPos : lastOOTHist = " , lastOOTHist);
}
}
else
{
Comment ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
Print ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
return ( false );
}
댓글은 항상 작동합니다.
Comment ( "FUNC isCloseByTakeLastOpenPos : не удалось выбрать ордер в истории" );
저는 마지막 시장 위치가 이익으로 마감된 경우 True 를 반환하고 손실로 마감되지 않은 경우 False 를 반환해야 하는 함수를 작업 중입니다. 이 함수가 True 를 반환하면 모든 포지션이 닫힙니다(이연 및 시장 포지션 모두).
다음은 일어난 일입니다.
Artyom 은 내가 잼이 있는 곳을 위에서 제안했습니다. 나는 나 자신을 위해 다시 썼다. 지금까지 최종 버전은 아니지만 .. 이미 꽤 명확합니다. 어드바이저를 실행한 후, 나는 나머지 포지션이 클로즈되지 않았기 때문에 클로즈되지 않았다는 것을 즉시 발견했습니다. 그 이유가 무엇인지 궁금해지기 시작했습니다. 함수에서 몇 곳을 주석 처리했고 이 블록에서 다음과 같은 사실을 깨달았습니다.
댓글은 항상 작동합니다.
나는 그것을 주석 처리하고 계속 진행했습니다. 이 주석은 다음과 같습니다.
일반적으로 마지막 닫힌 위치가 있더라도 작동하지 않습니다. 무엇이 잘못되었을 수 있습니까?
내 생각은, 비록 내가 틀렸을 수도 있지만 ... 어쩌면 당신은이 블록이 필요합니다
for 루프도 넣어? 결국, 그렇지 않으면 누가 버스트가 어느 방향으로 있을지 알 수 있습니다. 결국 변수 j 는 위치의 일련 번호를 포함하며 어느 방향으로 정렬할지 명시적인 표시가 없습니다.
변수 j는 함수의 맨 처음에 음수 값으로 명시적으로 초기화되어야 합니다. 시도 해봐. 더 이상 아무것도 보지 않았습니다.
그리고 이 함수에서 마지막으로 닫힌 함수의 Stoploss를 어디에서 읽습니까? 거기에는 아무것도 없습니다.
모두 자! 아침은 더 현명하다! 나에게는 벌써 새벽 1시! 잘 자! 그리고 Artyom은 이미 늦잠을 잤습니다!
예, 이미 밤에 생각하기 시작했기 때문에 나는 5 일 동안 흐름을하고 있습니다. 안녕히 주무세요.
안녕하세요. 사전 정의된 변수 "Point"에서 전략 테스터 로그의 끝에 0이 정의되지 않은 이유는 무엇입니까?
Пример:
static double lBUY;
lBUY=100*Point; //Так-же можно написать 10,20,180 или 520.
if(lBUY==0.01)
{
Alert("НУЛИ НЕ ПИШУТСЯ В КОНЦЕ Point ",lBUY);
}
저는 시베리아 사람입니다. 크라스노야르스크 근처.
SibirYAK, 거의 zamlYAK))
예, 이미 밤에 생각하기 시작했기 때문에 나는 5 일 동안 흐름을하고 있습니다.
밤에 생각하지 않는 사람을 말하는 것이 더 쉽습니다. 반대의 경우도 마찬가지입니다. 저도 같은 상황입니다. 또한 밤에는 아무도 방해하지 않습니다. 그건 그렇고, 나는 뇌가 밤에 더 잘 생각한다는 것을 읽은 적이 있습니다. 이것은 과학자들이 배운 것입니다 ...
안녕하세요. 사전 정의된 변수 "Point"에서 전략 테스터 로그의 끝에 0이 정의되지 않은 이유는 무엇입니까?
Пример:
static double lBUY;
lBUY=100*Point; //Так-же можно написать 10,20,180 или 520.
if(lBUY==0.01)
{
Alert("НУЛИ НЕ ПИШУТСЯ В КОНЦЕ Point ",lBUY);
}
그리고 Alert는 실제로 무엇을 제공합니까?
DoubleToStr(숫자, 비트 깊이)
정말 감사합니다! 나는 양초의 특성(더 많이, 더 적게 등)을 비교하기 위해 이것을 필요로 했습니다. 나사를 조이고 작동합니다. 나는 그가 어떻게 문자열 데이터 유형을 그런 식으로 비교하는지 이해할 수 없습니까? 또는 double to string은 숫자를 문자열로 변환하지 않습니까? :-디
추신. 인디케이터에서는 안되고 스크립트에서만... 문제는 차트의 프로그램에서는 막대 특성이 소수점 5자리로 전송되는데 High[i]를 호출하면 소수점 4자리만 나온다는 것입니다. 밖으로.
쓰기:
Alert("doubletostr 높음 = ", DoubleToStr(높음[1],5));
if (DoubleToStr(High[2],5)>(DoubleToStr(High[3],5)))
{
Alert("더 보기");
}
if (DoubleToStr(High[2],5)<(DoubleToStr(High[3],5)))
{
Alert("덜");
}
쟁기는 결과를 다섯 자리로 쓰고 더 많거나 적게 계산합니다. 문제는 지표의 문자열 배열이 차트에 표시되지 않는다는 것입니다. 그래서...
...쓰기:
Alert("Normalizedouble 높음 = ", NormalizeDouble(High[1],5));
쟁기질하지 않음 - 결과 - > 1.1234
나는 개발자를 이해하지 못합니다. 왜 그렇게 복잡하게 만드나요? 그래프에 너무 많은 문자가 표시되면 호출된 함수의 5개 문자를 긁지 않는 이유는 무엇입니까? 간단한 탈출구가 있습니까?
저는 마지막 시장 위치가 이익으로 마감된 경우 True 를 반환하고 손실로 마감되지 않은 경우 False 를 반환해야 하는 함수를 작업 중입니다. 이 함수가 True 를 반환하면 모든 포지션이 닫힙니다(이연 및 시장 포지션 모두).
다음은 일어난 일입니다.
Artyom 은 내가 잼이 있는 곳을 위에서 제안했습니다. 나는 나 자신을 위해 다시 썼다. 지금까지 최종 버전은 아니지만 .. 이미 꽤 명확합니다. 어드바이저를 실행한 후, 나는 나머지 포지션이 클로즈되지 않았기 때문에 클로즈되지 않았다는 것을 즉시 발견했습니다. 그 이유가 무엇인지 궁금해지기 시작했습니다. 함수에서 몇 곳을 주석 처리했고 이 블록에서 다음과 같은 사실을 깨달았습니다.
댓글은 항상 작동합니다.
나는 그것을 주석 처리하고 계속 진행했습니다. 이 주석은 다음과 같습니다.
일반적으로 닫힌 마지막 위치 가 있는 경우에도 작동하지 않습니다. 무엇이 잘못되었을 수 있습니까?
내 생각은, 비록 내가 틀렸을 수도 있지만 ... 어쩌면 당신은이 블록이 필요합니다
for 루프도 넣어? 결국, 그렇지 않으면 누가 버스트가 어느 방향으로 있을지 알 수 있습니다. 결국 변수 j 는 위치의 일련 번호를 포함하며 어느 방향으로 정렬할지 명시적인 표시가 없습니다.
저는 마지막 시장 위치가 이익으로 마감된 경우 True 를 반환하고 손실로 마감되지 않은 경우 False 를 반환해야 하는 함수를 작업 중입니다. 이 함수가 True 를 반환하면 모든 포지션이 닫힙니다(이연 및 시장 포지션 모두).
다음은 일어난 일입니다.
Artyom 은 내가 잼이 있는 곳을 위에서 제안했습니다. 나는 나 자신을 위해 다시 썼다. 지금까지 최종 버전은 아니지만 .. 이미 꽤 명확합니다. 어드바이저를 실행한 후, 나는 나머지 포지션이 클로즈되지 않았기 때문에 클로즈되지 않았다는 것을 즉시 발견했습니다. 그 이유가 무엇인지 궁금해지기 시작했습니다. 함수에서 몇 곳을 주석 처리했고 이 블록에서 다음과 같은 사실을 깨달았습니다.
댓글은 항상 작동합니다.
나는 그것을 주석 처리하고 계속 진행했습니다. 이 주석은 다음과 같습니다.
일반적으로 마지막 닫힌 위치가 있더라도 작동하지 않습니다. 무엇이 잘못되었을 수 있습니까?
내 생각은, 비록 내가 틀렸을 수도 있지만 ... 어쩌면 당신은이 블록이 필요합니다
for 루프도 넣어? 결국, 그렇지 않으면 누가 버스트가 어느 방향으로 있을지 알 수 있습니다. 결국 변수 j 는 위치의 일련 번호를 포함하며 어느 방향으로 정렬할지 명시적인 표시가 없습니다.