커뮤니티
문의드립니다.
2019-09-03 21:55:13
339
글번호 131674
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
변환부탁드립니다. 특히 스위치 케이스문은 예스트레이더에 없는 것 같은데 일반 if문 같은 거로 어떻게 바꾸는 지 모르겠습니다.
inputs:
FiboRange( numericsimple ),
FiboLevel( numericsimple );
variables:
tfEndTime( 0 ),
barsUsed( -1 ),
prevTFOpen( 0 ),
prevTFHigh( 0 ),
prevTFLow( 0 ),
prevTFClose( 0 ),
fiboValue( 0 ),
isNewTFStart( false );
Switch(FiboRange) begin
Case 1 to 8:
If tfEndTime = 0 or tfEndTime <= Date then begin
// Set end time
tfEndTime = Date;
Switch(FiboRange) begin
Case 1, 5:
tfEndTime = CalcDate(tfEndTime, 1);
Case 2, 6:
For Value1 = 0 to 7 begin
tfEndTime = CalcDate(tfEndTime, 1);
If DayOfWeek(tfEndTime) = 1 then break;
end;
Case 3, 7:
For Value1 = 0 to 31 begin
tfEndTime = CalcDate(tfEndTime, 1);
If DayOfMonth(tfEndTime) = 1 then break;
end;
end;
isNewTFStart = true;
end
Else isNewTFStart = false;
Case 9 to 10:
isNewTFStart = barsUsed = -1;
end;
If isNewTFStart then begin
Value3 = 0; {Upper value}
Value4 = 0; {Lower value}
Switch(FiboRange) begin
Case 1 to 3:
Value3 = prevTFHigh;
Value4 = prevTFLow;
Case 5 to 7:
Value3 = Maxlist(prevTFOpen, prevTFClose);
Value4 = Minlist(prevTFOpen, prevTFClose);
end;
Value5 = FiboLevel * (Value3 - Value4) / 100; //delta
If prevTFClose > prevTFOpen Then fiboValue = Value3 - Value5 Else fiboValue = Value4 + Value5;
prevTFOpen = Open;
prevTFHigh = High;
prevTFLow = Low;
prevTFClose = Close;
barsUsed = 1;
end
Else begin
prevTFHigh = Maxlist(prevTFHigh, High);
prevTFLow = Minlist(prevTFLow, Low);
prevTFClose = Close;
barsUsed += 1;
end;
Fibo = fiboValue;
If false then Value10 = Fibo[1];
2.
변환 부탁드립니다.
http://help.tradestation.com/09_01/tsdevhelp/subsystems/elword/word/formattime_reserved_word_.htm
Value3= StrToNum(FormatTime("H", ElTimeToDateTime(Time[2])));
답변 1
예스스탁 예스스탁 답변
2019-09-04 10:55:08
안녕하세요
예스스탁입니다.
1
올려주신 2개의 내용들은 변환방법을 모르겠습니다.
어떤 값을 리턴하는지 알수 없는 함수가 있고
isNewTFStart와 같은 변수가 true나 false를 저장하기도 하고 숫자를 저장하기도 해서
예스랭귀지와 다른 체계를 가지고 있는 부분들이 있습니다.
저희가 변경해 드리기 어렵습니다.
2
Switch문 같은 경우에는
조건들을 경우의 수를 나열해서 작성하면 되므로 문제가 되지 않습니다.
case 별로 나열해 작성하시면 되는 부분입니다.
Switch(FiboRange) begin
Case 1 to 8:
은 FiboRange의 값이 1에서 8 사이라는 의미입니다.
아래와 같이 표현하시면 됩니다.
if FiboRange >= 1 and FiboRange <= 8 then
{
실행문
}
Switch(FiboRange) begin
Case 1, 5:
위와 같은 경우는 FiboRange가 1이나 5라는 의미입니다.
아래와 같이 표현하시면 됩니다.
if FiboRange == 1 or FiboRange == 5 then
{
실행문
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
변환부탁드립니다. 특히 스위치 케이스문은 예스트레이더에 없는 것 같은데 일반 if문 같은 거로 어떻게 바꾸는 지 모르겠습니다.
inputs:
FiboRange( numericsimple ),
FiboLevel( numericsimple );
variables:
tfEndTime( 0 ),
barsUsed( -1 ),
prevTFOpen( 0 ),
prevTFHigh( 0 ),
prevTFLow( 0 ),
prevTFClose( 0 ),
fiboValue( 0 ),
isNewTFStart( false );
Switch(FiboRange) begin
Case 1 to 8:
If tfEndTime = 0 or tfEndTime <= Date then begin
// Set end time
tfEndTime = Date;
Switch(FiboRange) begin
Case 1, 5:
tfEndTime = CalcDate(tfEndTime, 1);
Case 2, 6:
For Value1 = 0 to 7 begin
tfEndTime = CalcDate(tfEndTime, 1);
If DayOfWeek(tfEndTime) = 1 then break;
end;
Case 3, 7:
For Value1 = 0 to 31 begin
tfEndTime = CalcDate(tfEndTime, 1);
If DayOfMonth(tfEndTime) = 1 then break;
end;
end;
isNewTFStart = true;
end
Else isNewTFStart = false;
Case 9 to 10:
isNewTFStart = barsUsed = -1;
end;
If isNewTFStart then begin
Value3 = 0; {Upper value}
Value4 = 0; {Lower value}
Switch(FiboRange) begin
Case 1 to 3:
Value3 = prevTFHigh;
Value4 = prevTFLow;
Case 5 to 7:
Value3 = Maxlist(prevTFOpen, prevTFClose);
Value4 = Minlist(prevTFOpen, prevTFClose);
end;
Value5 = FiboLevel * (Value3 - Value4) / 100; //delta
If prevTFClose > prevTFOpen Then fiboValue = Value3 - Value5 Else fiboValue = Value4 + Value5;
prevTFOpen = Open;
prevTFHigh = High;
prevTFLow = Low;
prevTFClose = Close;
barsUsed = 1;
end
Else begin
prevTFHigh = Maxlist(prevTFHigh, High);
prevTFLow = Minlist(prevTFLow, Low);
prevTFClose = Close;
barsUsed += 1;
end;
Fibo = fiboValue;
If false then Value10 = Fibo[1];
2.
변환 부탁드립니다.
http://help.tradestation.com/09_01/tsdevhelp/subsystems/elword/word/formattime_reserved_word_.htm
Value3= StrToNum(FormatTime("H", ElTimeToDateTime(Time[2])));