//+------------------------------------------------------------------+//| Виртуальный стоп |//+------------------------------------------------------------------+void PutLable(conststring name="",datetime time=0,double price=0,constcolor clr=clrGreen)
{
//--- сбросим значение ошибкиResetLastError();
//--- Создаем меткуif(!ObjectCreate(0,name,OBJ_ARROW_LEFT_PRICE,0,time,price))
{
Print(__FUNCTION__,
": не удалось создать левую ценовую метку! Код ошибки = ",GetLastError());
return;
//--- установим цвет меткиObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим стиль окаймляющей линииObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_SOLID);
//--- установим размер меткиObjectSetInteger(0,name,OBJPROP_WIDTH,2);
}
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+bool isNewBar(string symbol,ENUM_TIMEFRAMES timeframe)
{
//---- получим время появления текущего бараdatetime TNew=datetime(SeriesInfoInteger(symbol,timeframe,SERIES_LASTBAR_DATE));
datetime m_TOld=0;
//--- проверка на появление нового бараif(TNew!=m_TOld && TNew)
{
m_TOld=TNew;
//--- появился новый бар!return(true);
Print("Новый бар!");
}
//--- новых баров пока нет!return(false);
}
//+------------------------------------------------------------------+//| Возвращает true, если появился новый бар для пары символ/период |//+------------------------------------------------------------------+bool IsNewBar()
{
//--- в статической переменной будем помнить время открытия последнего бараstaticdatetime last_time=0;
//--- текущее времяdatetime lastbar_time=SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
//--- если это первый вызов функцииif(last_time==0)
{
//--- установим время и выйдем
last_time=lastbar_time;
return(false);
}
//--- если время отличаетсяif(last_time!=lastbar_time)
{
//--- запомним время и вернем true
last_time=lastbar_time;
return(true);
}
//--- дошли до этого места - значит бар не новый, вернем falsereturn(false);
}
//+------------------------------------------------------------------+//| Считаем лот в зависимости от полученного профита |//+------------------------------------------------------------------+doubleVolume(void)
{
double lot=Lots;
//--- Получим доступ к историиHistorySelect(0,TimeCurrent());
//--- Сделки в историиint orders=HistoryDealsTotal();
//--- Тикет последней сделки ulong ticket=HistoryDealGetTicket(orders-1);
if(ticket==0)
{
Print("Нет сделок в истории! ");
lot=Lots;
}
//--- Профит сделкиdouble profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
//--- Лот сделкиdouble lastlot=HistoryDealGetDouble(ticket,DEAL_VOLUME);
//--- Профит отрицательныйif(profit<0.0)
{
//--- Увеличиваем следующий лот
lot=lastlot*KLot;
Print(" Cделка закрыта по стопу! ");
}
//--- Приводим лот к минимальномуdouble maxvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
if(lot<maxvol)
lot=maxvol;
//--- Если лот больше максимального то начальный лотif(lot>MaxLot)
lot=Lots;
//--- Возвращаем торговый объемreturn(lot);
}
//+------------------------------------------------------------------+//| Смотрим тип последней закрытой сделки |//+------------------------------------------------------------------+int LastDealType(void)
{
int type=0;
//--- Получим доступ к историиHistorySelect(0,TimeCurrent());
//--- Сделки в историиint orders=HistoryDealsTotal();
//--- Тикет последней сделки ulong ticket=HistoryDealGetTicket(orders-1);
//--- Нет сделок в историиif(ticket==0)
{
Print("Нет сделок в истории! ");
type=0;
}
if(ticket>0)
{
//--- Последняя сделка BUY if(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_BUY)
{
type=2;
}
//--- Последняя сделка SELLif(HistoryDealGetInteger(ticket,DEAL_TYPE)==DEAL_TYPE_SELL)
{
type=1;
}
}
//---return(type);
}
MT5版の不具合を修正
更新ありがとうございます・・・。今週はmt5がちゃんと仕事してくれました...。1000から数えると10%以上...こんな写真もあります。今日も100本以上あったのに...。私もmt4とcmilliona grid6https://www.mql5.com/ru/code/12971 を組み合わせてどうなるか試してみようと思っています...)) 。
最新バージョン - 明確に動作します - あなたはピップすることができます - 閉会手は、同じ方向に開き、あなたは遅延のいくつかの種類を持っている必要があります...ゼロより少しトラブり始めた・・・2~4pips、そのまま戻れば・・・考える義務-矢印はずっと立っているが、ポジションはない・・・。また、これまでのものに比べて、より多くの信号を出しています。まあ、これはあくまでも概算ですが...。まあ、それはまだ最良の選択肢です... もう一度ありがとう... 他の何かが沈黙している - aw-aw 他の誰が何かを発見した...とか、ジンクスはいらないとか...))
このストラテジーのシグナルを私のマーチンアドバイザーで接着したところ、2015年1月から今日までの結果がこれです。
EURUSD
USDCHFです。
このストラテジーのシグナルを私のマーチンアドバイザーで接着したところ、2015年1月から今日までの結果がこれです。
EURUSD
USDCHFです。
RSIインジケータの翻訳を試みたが、うまくいかなかった...どうやらライブラリにマッチしないようだ...。
そして、CopyBufferが トレンド定義ブロックで負けたところ、RSIが70と30の基準値を持っている。
アドバイザー'}'の2つの誤りを訂正したいのですが、どこに書けばよいか、どなたかご助言ください。- unexpected end of program '{' - unbalanced parenthes TMA.mq4
アドバイザー'}'の2つの誤りを訂正したいのですが、どこに書けばよいか、どなたかご助言ください。- unexpected end of program '{' - unbalanced parenthes TMA.mq4
コードを正しく挿入してください:フォーラムでコードを正しく挿入して ください(あなたのメッセージを修正しました)。
追記:コードスタイラーを使用することを強くお勧めします - エラーの検出に役立ちます(ソースコードでの作業:スタイラー - プログラム開発)。