При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
//+------------------------------------------------------------------+//| Enum Lor or Risk |//+------------------------------------------------------------------+enum ENUM_LOT_OR_RISK
{
lots=0, // Constant lot
risk=1, // Risk in percent
};
//+------------------------------------------------------------------+
inputdouble MaximumRisk = 0.01; // Maximum Risk in percentageinputdouble DecreaseFactor = 3; // Descrease factorinput ENUM_LOT_OR_RISK InpLotOrRisk = lots; // Money management: Lot OR Risk
//+------------------------------------------------------------------+//| Calculate optimal lot size |//+------------------------------------------------------------------+double TradeSizeOptimized(void)
{
double price=0.0;
double margin=0.0;
//--- select lot sizeif(!SymbolInfoDouble(_Symbol,SYMBOL_ASK,price))
return(0.0);
if(!OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,margin))
return(0.0);
if(margin<=0.0)
return(0.0);
double lot=0;
//---switch(InpLotOrRisk)
{
case lots:
lot=MaximumRisk;
break;
case risk:
lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
default:
break;
}
//--- calculate number of losses orders without a breakif(DecreaseFactor>0)
{
//--- select history for accessHistorySelect(0,TimeCurrent());
//---int orders=HistoryDealsTotal(); // total history dealsint losses=0; // number of losses orders without a breakfor(int i=orders-1; i>=0; i--)
{
ulong ticket=HistoryDealGetTicket(i);
if(ticket==0)
{
Print("HistoryDealGetTicket failed, no trade history");
break;
}
//--- check symbolif(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
continue;
//--- check Expert Magic numberif(HistoryDealGetInteger(ticket,DEAL_MAGIC)!=Magic_Number)
continue;
//--- check profitdouble profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
if(profit>0.0)
break;
if(profit<0.0)
losses++;
}
//---if(losses>1)
lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//--- normalize and check limitsdouble stepvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
lot=stepvol*NormalizeDouble(lot/stepvol,0);
double minvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
if(lot<minvol)
lot=minvol;
double maxvol=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
if(lot>maxvol)
lot=maxvol;
//--- return trading volumereturn(lot);
}
//+------------------------------------------------------------------+
#property version "1.07"
ボタンの色を変更しました。
ボタンは使用せず、インフォメーションバーとして使用します。
と別の色
このコードの作者を教えてください -(またはもともと私はあなたが私に与えたリンクから別のコードをダウンロードしたSpeed-v1.mq548キロバイト)。
こう見えても
彼なのか?
ポジションが利益になると、ボタンを押すと、その方向にさらにポジションがオープンします。
いいえ、水平線が売りのトリガーになると、買いボタンが売りボタンをトリガーし、売りボタンがトリガーしないことが判明しました------。
何がベストなのかは実験してみないとわからないが、リバーサルはおそらく有効だろう。
#property version "1.08"
反転ボタンを追加した。
で、設定で、場所を変更
ボタンセットアップ
ポジションを開くと、ストップロスはすぐに設定されますが、トロールも設定されます(黄色の水平線 です)。
が、ストップロスは同じ位置にはならず、トレーリング入力によって 引き上げられる ushort InpObjTrailingStop = 27;// Obj:トレーリングストップ(価格から対象までの距離、単位:ピップス)
----------------------------------------------------------------
このボタンの仕組みがよくわからないんです。
#property version "1.09"
もう一つのボタンを追加 - すべてのペアのすべてのオープンポジションを削除します。
Expert Advisorを削除し、チャートテンプレートを変更する。
#property version "1.10"
ボタンを非表示にする機能を追加しました。
私はここで台無しにした - それはデモで動作しますが、それはエラーが発生しました 2019.11.05 15:51:33.103 AVGiS知能(GBPUSD、H1)の範囲外の配列 'AVGiS intelligence.mq5' (176,34)で。
これが働く専門家です
従来のExpertに、Horizontal line 用のメソッドを2つ追加しました。
1つの可能性:ライン1が与えられた距離でライン4を開き、ライン2が与えられた 距離でライン 3を開く。
2つ目の可能性:ライン7は、価格の後ろに移動する所定の距離に ライン10を開き、価格がそれに触れるとコマンドをトリガーします。ライン8は、所定の距離に ライン9を開き、- 7と10と同じ動作をします。
従来のExpertに、Horizontal line 用のメソッドを2つ追加しました。
1つの可能性:ライン1が与えられた距離でライン4を開き、ライン2が与えられた 距離でライン 3を開く。
2つの可能性:ライン7は、価格の後ろに移動する所定の距離に ライン10を開き、価格がそれに触れるとコマンドがトリガーされます。ライン8は、所定の距離に ライン9を開き、 - 7と10と同じアクションです。
はたらいてみた
その行から設定を変更することができれば、売り注文を出すことができたはずです。
従来のExpertに、Horizontal line 用のメソッドを2つ追加しました。
1つの可能性:ライン1が与えられた距離でライン4を開き、ライン2が与えられた 距離でライン 3を開く。
2つ目の可能性:7行目で10行目を指定した 距離で開き、価格の後ろに移動して価格がそれに触れるとコマンドが起動する。8行目で9行目を指定した 距離で開き、7と10と同じ動作をする。
最初の可能性では、ライン4と3は与えられた距離で開き、最大で無限大になります。
リスクを正しく処方する方法を考え出した。
ここで、ロット - 挿入TradeSizeOptimized()
Expert Advisorで修正しないと、正しく表示されない。