//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после открытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+datetime SecondsAfterOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
int i, k=OrdersTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) t=OrderOpenTime();
}
}
}
}
}
}
return(TimeCurrent()-t);
}
// Тут начало функции открытия позиций (открытие Buy)....
// Ниже код открытия Sell:
PauseMain51=random(5,9)*60;
if (!Lot()) return;// Средств не хватает на миним.- выходимif (!OpnSell51 || !Trade) return;
if (ExistPositions(NULL, OP_SELL, 51, 0)) // Если есть такой же открытый Sell
{
if (SecondsAfterOpenLastPos(NULL, OP_SELL, 51)<=/* PauseMain51*/ 7*60) return; (7*60 сек = 7 минут)
// Если прошло мало времени - валим
}
//---------------------- Позиции ещё нету - открываемся...-----------------------------
divider=1;
Lots=GetSizeLot();
Magic=51; // Задаём магик... 5 и 1; 5 = пять минут, 1 = стратегия 1
New_Comm="Sell_M5_Стратегия_1_Основная позиция"; // Задаём комментарий для позиции
Lots_New=NormalizeLot(Lots/divider, False, NULL);
OpenPosition(NULL,OP_SELL,Lots_New,0,pb-tp*po,Magic,New_Comm);
return;
static int time = Time[0];
if (時間 < 時間[0]){。
// 古いろうそく
} else {
// 新しいキャンドル
time = Time[0];
}
トレードの長さが以前の半分になりました
新しいバーを チェックする代わりに、秒単位で設定されたオープン間のポーズを取るだけです。
私はこのようにチェックしています(太字で、/*PauseMain*/は無視します - 遅延の分単位のランダムな値です - 5から9まで)。
意味があればいいのですが...。
Borisさん、コードの小さな修正ですが、元のロットに戻るときに配列の位置をリセットすることを追加するのを忘れていました。
ありがとうございました。すべてがうまくいきました。よく通る、正しいロットを置く!!!!
バーの幅を設定するためのコードを変更したり、何かを追加するにはどうすればよいですか?
インジケーターの設定- 線種、色、幅/厚さ
インジケーターの設定で、線の種類、色、太さ/幅を設定します。
SetIndexStyle(1, DRAW_LINE,EMPTY)を設定します。
SetIndexStyle(2, DRAW_NONE)を設定します。
SetIndexStyle(3, DRAW_NONE)を設定します。
SetIndexStyle(4, DRAW_NONE)を設定します。
って、ここにあるんですけど......私のツールは線幅が0なので、設定に困らないように2の幅にしたいんですけど......やり方がわかりません......プログラマーじゃないので...助けてください )))
私はプログラミングのことはまったくわかりません。CCI Filter (https://www.forex-tsd.com/indicators-metatrader-4/3356-cci-filter.html) をWPRと同じにしたくて、CCIをWPRに変更し、バーの色付け条件でレベルを変更しました(CCIのように-100、0、100ではなく、-60、-50、-40。MTではWPRは-100から0まであるようですね?)。しかし、なぜかエラーでコンパイルされ、画面にはモノクロのインジケータが表示されます。どうしたんですか?ありがとうございました。
メモリは役に立たない)。
どのような通貨か知りたい、変数を規定する
文字列 EUR="EURUSD"。
文字列 GBP="GBPUSD"。
文字列 symbl = "";
冒頭で次のように書いています。
symbl = symbl(); //シンボルの値を受け取る
受信したsymblの値と自分の変数の値を比較して、一致したら判定をしたい。
switch (symbl) {
case .........then nothing happens (( break;
}
記憶を呼び覚ましてください))
文字定数しか使えないのはわかったのですが、どうすればいいのでしょうか?
メモリは役に立たない)。
どのような通貨なのか知りたい、所定の変数を
文字列 EUR="EURUSD"。
文字列 GBP="GBPUSD"。
文字列 symbl = "";
冒頭で次のように書いています。
symbl = symbl(); //シンボルの値を受け取る
受信したsymblの値と自分の変数の値を比較して、一致したら判定をしたい。
switch (symbl) {
case .........then nothing happens (( break;
}
Refresh your memory ))