// Переводит в строку курсstring KursS(double Ku) {
int k, i;
string S; // 8 дробных цифр для составного курса открытия позиции в MT5
S=DoubleToString(NormalizeDouble(Ku,8),8); // Уберем концевые нули
i=StringLen(S)-1;
if (StringSubstr(S,i,1)!="0") return(S); // Их нетfor (k=i-1;k>0;k--) if (StringSubstr(S,k,1)!="0") {S=StringSubstr(S,0,k+1); break;}
i=StringLen(S)-1; // Уберем концевую точкуif (StringSubstr(S,i,1)==".") S=StringSubstr(S,0,i);
return (S);
} // KursS
// Переводит в строку курс Вот так короче!!! Строк меньше и в каждой строке прозрачнее
string Kurs(double Ku)
{
string S="0"; int n=8; // Количество знаков дробной части
while(S[StringLen(S)-1]=='0' && n>=0)
{
S=DoubleToString(Ku,n); // n дробных цифр
n--;
}
return (S);
} // Kurs
もう一つの疑問は、余分なゼロをカットする方法です。
を0.2倍する
小数点以下の桁数は常に異なる値を使用します。
もう一つの疑問は、余分なゼロをカットする方法です。
を0.2にする。
小数点以下の桁数は常に異なる値を使用します。
小数点以下は8桁まであり、必要な分だけ修正します。
このように再構築することで、すべてがうまくいく
ソースコードでは短く、実行では長く。高速実行は大賛成です。比較スクリプトを実行すると、6秒と11秒になりました。番号から文字列への 操作のせいで、一回で済ませるのが良い。
このようにリワークして、行っています。
その様子はどのように理解されていますか?2本の水平線はできて いるのでしょうか?ログにはエラーはありませんが、スクリプトの開始後に行が表示されません
AUDCADではうまくいってラインができたのに、AUDCHFとEURUSDではできなかったのは不思議です...。
わかったような気がする・・・。すでに水平線が引かれているチャートには表示されません。それらを削除してスクリプトを実行すると、線が表示されます。しかし、なぜ登場するのでしょうか?質問です。
ラインや、同じ名前の 別のオブジェクトを再作成することは禁止されている
どんなものにも名前がついています。グラフィック上で右クリック→オブジェクトの一覧表示
横線名で時間保存が可能