datetime date[]; // тут будем хранить данные времени баров, которые видны на экране// если нужны другие данные баров, заводим соотв. массивы void DoWork(bool redrawAll = false)
{
int visibleBars = 1, firstVisibleBars = 0;
visibleBars = (int)ChartGetInteger(0, CHART_VISIBLE_BARS);
firstVisibleBars = (int)ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR);
ArrayResize(date, visibleBars + 10); // выделяем память с запасом// так можно узнать масштаб графика, может пригодитсяint scale = (int)ChartGetInteger(0, CHART_SCALE);
// копируем данные времен баров if (CopyTime(Symbol(), Period(), startpos, visibleBars, date) == -1)
{
Print("Не удалось скопировать значения времени! Код ошибки = ", GetLastError());
return;
}
//--- определим шаг, если надо работать с масштабомint step = 1;
switch (scale)
{
case0:
step = 12;
break;
case1:
step = 6;
break;
case2:
step = 4;
break;
case3:
step = 2;
break;
}
double priceMin = ChartGetDouble(0,CHART_PRICE_MIN,0);
double priceMax = ChartGetDouble(0,CHART_PRICE_MAX,0);
for (int i = visibleBars - 1; i >= 0; i--)
{
/*
проходимся по всем видимым барам и ищем стрелки, искать можно путями:
1. Изначально при создании стрелок надо формировать имена стрелок с привязкой ко времени, например
string name = "UpArrow" + IntegerToString(TimeCurrent());
тогда тупо ищем стрелку с таким именем и далее двигаем, куда надо
2. Заносить стрелки в структуры и класть их в хештаблицу, первый проще
*/
}
}
問題は、Providerの注文が終了しても、Subscriberの注文が保持されたままであることです。どうやら普及率の違いからか。プロバイダー側で契約者の案件をクローズした場合、どのようにクローズさせればよいのでしょうか?どのような設定を変更すればよいのでしょうか?
Alexeyさんありがとうございます!4)))です。)
そこで...古い七面鳥を見つけ、そこから必要なものを切り出しました。書いてあげないけど))、キッカケにはなるでしょうね。そこにコメントを加えた、変数名を見れば一目瞭然です。
友人たちよ、私は信号の設定についてもっと質問がある。
問題は以下の通りです。Providerの注文が終了しても、Subscriberのものには残っています。どうやら普及率の違いからか。プロバイダー側で契約者の案件をクローズした場合、どのようにクローズさせればよいのでしょうか?どのような設定を変更すればよいのでしょうか?
取引もほぼ瞬時に成立するはずです。質問です。
そこで...古い七面鳥を見つけ、そこから必要なものを切り出しました。書いてあげないけど))、キッカケにはなるでしょうね。そこにコメントをつけたら、変数名を見れば一目瞭然。
さらに、この行にはインジケータサブウインドウの 番号を入れた方がいいのでは?ただ、何が必要なのかが具体的にわからない
追記、この行にインジケータサブウインドウの番号を入れた方が良いのでは?ただ、何が必要なのかが具体的にわからない
おっと、今朝はぼんやりしていて、チャートのイベント処理を コピーしていませんでした。
そこで...古い七面鳥を見つけ、そこから必要なものを切り出しました。書いてあげないけど))、キッカケにはなるでしょうね。そこにコメントを追加した、変数名を見れば一目瞭然です。
そして、どこにステップを取り付けるか、一般的にその機能は、何についてですか?
そして、これ。
2. Заносить стрелки в структуры и класть их в хештаблицу, первый проще
やったことがない。できれば、理解、把握、応用できるように、コード例を教えてください。
おっと、今朝はぼんやりしていて、グラフのイベント処理を コピーしていませんでした。
知っていれば簡単なことです。欲望と手段さえあれば、鍵盤を叩くだけでいいのです。
知らないで掘っていると...それはそれで面倒くさい...。さらにヒントがあれば、もうダメだ、神経が残らない。
だから、ヒントをありがとう!!!!
アレクセイさん、ありがとうございました。
ピッチのどこをねじ込むのか、その機能全般について、何について?
そして、これ。
やったことがない。できれば、理解、納得して使えるように、コード例を教えてください。
グラフを水平方向に圧縮(+/-キー)すると、スケールが変わり、時にはグラフオブジェクトが重なり合うこともあります。念のため、このコードを引用したのは、スケールの決め方です。
ハッシュを使ったコードは引用しません。持っていないので、ふと思いついただけです。バリアント1をやったほうが、シンプルでいい。
知識についてですが、勉強している皆さんにアドバイスすると、ヘルプを自由に読んで、どこに何があるのか、セクションを飛び回るだけでいいんです。つまり、詰め込まないことです。私は、ダメ元でそんな詰め込みをしていました。おおよそでいいので、「こういうものがある」と知っていれば......。少なくともセクション/サブセクションでそうすれば、疑問が生じたときに、頭の中で歯車が回り、探す方向が見えてくるはずです。原則的にヘルプは完璧ではありませんが、事例がたくさんあるので大丈夫です。
言語そのものがシンプルなので、習得は難しくありません。APIで、どこに何があるか、どのように適用するかという困難が発生する
一見すると、3セントのような簡単な作業に見えます。が! ..............................
インジケータウィンドウに任意のオシレータのラインが表示され、"0 "を基準に異なる振幅で揺れ動く。
実際の問題点は
- 下から上へ交差する "0 "の位置で、インジケーターウィンドウの下枠に矢印を描きます。
- 0 "で上から下へ交差するように、インジケーターウィンドウの上側の境界線 付近に矢印を描きます。
- インジケーターウィンドウのオシレーターチャートのセルフスケーリングでは、矢印は自動的にインジケーターウィンドウの境界線に留まるはずです。
例えば、チャートをヒストリーに沿って前後にスクロールしたり、水平スケールを変更したりしても、矢印は常に自動的にインジケーターウィンドウの境界線に留まるはずです。
金銭的に助けてくれ」なんてヒントは 勘弁してください))。そのような機能のソース コードを添付するか、リンクを貼ってください。
ありがとうございました。
よろしくお願いします!
各(とする)日の最大 ドローダウンを求める必要があります(ファイルへの書き込みは1日に1回発生します) - MT4ターミナル。
最大ドローダウンはピークから現在の資金ドローダウンまでのチャート上の距離で、資金ドローダウンは現在の損失額です。
次のようなコードを書きました。
if(Analiz_Prosadki==true)
{
if(ContolSavaTXT==1)
{
ProfitNew=0;
ProfitMin=0;
ContolSavaTXT=0;
}
if(ContolSavaTXT==0)
{
ProfitNew=AccountInfoDouble(ACCOUNT_PROFIT);
BalansNew==AccountInfoDouble(ACCOUNT_BALANCE); //Текузее значение баланса
if (BalansNew>BalansMax) BalansMax=BalansNew;
if (ProfitNew<ProfitMin && BalansNew>=BalansMax) ProfitMin=ProfitNew;
if (ProfitNew<ProfitMin && BalansNew<BalansMax) ProfitMin=ProfitNew-(BalansMax-BalansNew);
}
ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitMin); // Пишем информацию в файл - функция возвращает 1
}
しかし、あるチャートでは正しく、あるチャートでは間違っている。 同時に、そのチャートは視覚的に同じである。
コードかロジックに間違いがあるのでしょうが、どのようなものか理解できません。