//+------------------------------------------------------------------+//| trade v1.mq4 |//| |//| frixer@yandex.ru |//+------------------------------------------------------------------+//--- input parameters//extern int Время;//extern int Input;//extern int SL;//extern int TP;//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----int bars = 9; // количество баровint gmt = 16; // время входаdoubleinput = 0.0010; // вход на рынокdouble sl = 100; // уровень SL от высоты коробки в %double tp = 100;
int lot=1;
int topOrder,bottomOrder;
if (Hour()==gmt) // проверяем свечу
{
double Shift_high = iHighest(NULL,PERIOD_H1,MODE_HIGH,bars,0); //поиск бара с максимальной ценой из bars начиная с 0-го бараdouble Shift_low = iLowest (NULL,PERIOD_H1,MODE_LOW ,bars,0); //поиск бара с минимальной ценой из bars начиная с 0-го бараdouble Price_high = iHigh (NULL,PERIOD_H1,Shift_high); // присвоение переменной максимального значение ценыdouble Price_low = iLow (NULL,PERIOD_H1,Shift_low); // присвоение переменной минимального значение ценыdouble Hinput = Price_high + input; // вверхняя граница входаdouble Linput = Price_low - input; // нижняя граница входаdouble height_box = Price_high - Price_low; // высота коробки barsdouble volumeSL = height_box / 100 * sl; // уровень SL зависит от %
topOrder=OrderSend(Symbol(),OP_BUYSTOP,lot,Hinput,3,Price_high-(height_box/100*sl),Price_high+(height_box/100*tp),"BUY",16384,0,Green);
if (topOrder<0)
{
Print("Верхний ордер ошибка #", GetLastError());
return(0);
}
}
//----return(0);
//----return(0);
}
//+------------------------------------------------------------------+
この方法で試しましたが(友人からのアドバイス)、うまくいきません。
int Orerov=0;
int Orderov_all = OrdersTotal(); // всего ордеров в терминалеfor (int n = 0;n<Orderov_all;n++) // начало цикла перебора ордеров
{
if(OrderSelect(n,SELECT_BY_POS)==TRUE) // выбран первый в списке ордерif(Comm == OrderComment()) // условие совпадения комментария
{
Tip= OrderType(); // тип
Cena=NormalizeDouble(OrderOpenPrice(),4); // цена
Ticket= OrderTicket(); // тикет
Stop=NormalizeDouble(OrderStopLoss(),4); // стоп-лосс
LOT=NormalizeDouble(OrderLots(),1); // размер лота
Orderov=1; //
}
}
例えば、10年後に取引口座の利益が500%だった場合(数字は想定)-。
すべての利益を再投資していることも考慮した、年間平均利益の算出方法について教えてください。
ありがとうございました。
皆さんこんにちは、明けましておめでとうございます。一度だけ注文をさせることはできない、その後に条件が満たされればその時に必要、二度目の注文があればされない。一例を挙げたいと思います。
教科書に載っている例が 、あなたのケースです。
例えば、10年後に取引口座の利益が500%だった場合(数字は想定)-。
すべての利益を再投資していることも考慮した、年間平均利益の算出方法について教えてください。
ありがとうございました。
チュートリアルの例は 、あなたのケースです。
私はそれを読みましたが、それは私のアルゴリズムで動作しませんし、私はまだすべてのティックで注文を持っています。
この方法で試しましたが(友人からのアドバイス)、うまくいきません。
皆さんこんにちは、明けましておめでとうございます。一度だけ注文し、その後に条件を満たせば、二度目の注文があったとしても、注文されないという方法が見つかりません。例を挙げるとすれば。
6の10乗の根から1を引き、100を掛ける。年間19.62%を獲得しています。
ありがとうございました。
ともかく、ここで質問です。
マルチピリオドインジケータを持っています。
計算を最適化するために、次のようなループを使っています。
// TimeFrames[i] массив с периодами
for (i=0; i<NumTimeFrames; i++)
{if (total_bars[i] != iBars(instrument, TimeFrames[i]) )
{
// тут вычисления индиктора
total_bars[i] = iBars(instrument, TimeFrames[i]);
}
}
主な問題は、iBarsが 現在の期間以外の期間の価格を読み込まないことです...。
IndicatorCounted や RefreshRates のような MQL のすべてのトリック
は現在の期間に対してのみ機能します。つまり、iBarsは履歴から取得し、履歴はチャート上で期間を変更することによってのみ読み込まれます。どうすればいいのか?MQLには、バックグラウンドで他の期間(現在の期間とは異なる)のバーを読み込むためのツールはありますか?
p.s. 乱筆乱文でなければいいのですが((主な問題は、iBarsが現在の期間以外の価格を読み込まないことです...