[アーカイブ!】アドバイザーの書き方を無料公開中 - ページ 83

 
intOrderSend() 文字列 symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
ポジションを建てるとき、または注文を出すときに使用する主な機能です。
トレードサーバーが注文に割り当てたチケットの番号を返します。追加のエラー情報を得るには、GetLastError() 関数を呼び出す必要があります。
注意事項
成行注文(OP_SELLまたはOP_BUY)の開始時に、Bid(売り)またはAsk(買い)の最新の価格のみを建値として使用することが可能です。現在の証券と異なる証券で運用する場合は、MODE_BID または MODE_ASK を指定してMarketInfo() 関数を使用し、その証券の最新の相場を取得する必要がある。計算された価格や正規化されていない価格を適用することはできません。価格スレッドに要求された建値がない場合、または小数点以下の桁数 で正規化されていない場合、エラー 129(ERR_INVALID_PRICE)が発生します。要求された建値が完全に期限切れである場合、スリッページパラメータとは 無関係にエラー 138(ERR_REQUOTE)が発生します。要求された価格が古くてもスレッドに存在する場合、ポジションは現在の価格で、現在の価格が価格+スリッページの 範囲内にある場合にのみ開かれます。

StopLossとTakeProfitのレベルは、マーケットに近すぎてはいけません。ストップ・レベルの最小距離(ポイント)は、MarketInfo() 関数で MODE_STOPLEVEL パラメータを使用して取得することができます。ストップレベルに誤りがある場合や正規化されていない場合は、エラー 130(ERR_INVALID_STOPS)が発生します。

注文を出す際に、建値がマーケットに近すぎることは許されません。MarketInfo() 関数でMODE_STOPLEVELを指定すると、現在の市場価格からの保留価格の最小距離をポイント単位で取得することができます。また、注文待ちの誤発注があった場合、エラー 130(ERR_INVALID_STOPS)が発生します。

一部の取引サーバーでは、注文の有効期限の適用を無効にすることができます。この場合、expiration パラメータに0以外の値を指定すると、エラー 147(ERR_TRADE_EXPIRATION_DENIED)が発生します。

一部の取引サーバーでは、未決済注文と保留注文の合計 金額が制限されることがあります。この制限を超えた場合、新しいポジションは開設されず(または保留注文は発注されず)、トレードサーバーはエラー 148(ERR_TRADE_TOO_MANY_ORDERS)を返します。
パラメータ
記号 - 取引用のシンボルです。
コマンド - オペレーションタイプ。取引操作列挙の いずれかを指定することができる。
ボリューム - ロット数
価格 - トレードの希望価格
ずれ - 買いまたは売り注文の最大価格スリッページ。
ストップロス - ストップロスのレベル
テイクプロフィット - テイクプロフィット・レベル
コメント - 注文コメント文。コメントの最後の部分は、サーバーによって変更される場合があります。
魔法 - 注文マジックナンバーユーザー定義識別子として使用することができる。
満了 - 注文の有効期限(保留中の注文のみ)。
矢印の色 - チャート上の開始矢印の色。パラメータがない場合、またはCLR_NONEの場合、チャート上に矢印は描画されません。
 
#プロパティリンク"dwgrell@gmail.com"

//--- 入力パラメータ
extern int period=16;
extern int porog=50;

extern double lot=1;
extern inttern k=5000;

extern bool pl=true;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0)です。
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0)です。
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
double bs=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,0,0),Digits);
double ss=NormalizeDouble(iCustom(Symbol(),0, "Aver",period,1,0),Digits);
double tpb=NormalizeDouble(bs+(bs-ss),Digits);
double tps=NormalizeDouble(ss-(bs-ss),Digits);
if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5);
if(pl==false)lots=lot;
if(OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,"",1394,0,Red);//Open Buy Limit.を指定します。
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);//Open Sell Limit.を送信します。
}
if(OrdersTotal()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);// 一番近い注文を選択します。
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue).OrderTicket()==OP_SELLSTOP&&&ss>OrderOpenPrice();
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red).OrderTicket(),OrderOpenPrice(),ss, OrderTakeProfit(),0,Red);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red).OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,ss,tpb,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,bs,tps,0,Blue).OrderTicket()==OP_SELLSTOP&&&ss>OrderOpenPrice();
if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red).OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,red);
if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red).OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
}
if(OrdersTotal()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) {OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red)。
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);} ←クリックすると拡大します。
if(OrderType()==OP_SELL) {OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);}.
if(OrderType()==OP_BUYSTOP) {OrderModify(OrderTicket(),bs,ss,tpb,0,Red)。
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,bs,tps,"",1394,0,Blue);} ←クリックすると拡大します。
if(OrderType()==OP_SELLSTOP){OrderModify(OrderTicket(),ss,bs,tps,0,blue).OrderTicket()の値を変更します。
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,ss,tpb,",1394,0,Red);}.
}

return(0)です。
}
//+------------------------------------------------------------------+
 
#property link "dwgrell@gmail.com"

//--- input parameters
extern int period=16;
extern int porog=50;

extern double lot=1;
extern int k=5000;

extern bool pl=true;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double bs=NormalizeDouble(iCustom(Symbol(),0,"Aver",period,0,0),Digits);
double ss=NormalizeDouble(iCustom(Symbol(),0,"Aver",period,1,0),Digits);
double tpb=NormalizeDouble(bs+(bs-ss),Digits);
double tps=NormalizeDouble(ss-(bs-ss),Digits);
if(pl==true)double lots=MathMin(AccountFreeMargin()/k,5);
if(pl==false)lots=lot;
if(OrdersTotal()==0)
{
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);//Открываем отложник на покупку.
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);//Открываем отложник на продажу.
}
if(OrdersTotal()==2)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);//Выбираем ближайший ордер.
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,0,0,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,0,0,0,Blue);
//if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
//if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP &&bs<OrderOpenPrice())OrderModify(OrderTicket(),bs,0,0,0,Red);
if(OrderType()==OP_SELLSTOP&&ss>OrderOpenPrice())OrderModify(OrderTicket(),ss,0,0,0,Blue);
//if(OrderType()==OP_BUY &&ss>OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);
//if(OrderType()==OP_SELL&&bs<OrderStopLoss())OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);
}
if(OrdersTotal()==1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUY) {/*OrderModify(OrderTicket(),OrderOpenPrice(),ss,OrderTakeProfit(),0,Red);*/
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);}
if(OrderType()==OP_SELL) {/*OrderModify(OrderTicket(),OrderOpenPrice(),bs,OrderTakeProfit(),0,Red);*/
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);}
if(OrderType()==OP_BUYSTOP) {/*OrderModify(OrderTicket(),bs,ss,tpb,0,Red);*/
OrderSend(Symbol(),OP_SELLSTOP,lots,ss,3,0,0,"",1394,0,Blue);}
if(OrderType()==OP_SELLSTOP){/*OrderModify(OrderTicket(),ss,bs,tps,0,Blue);*/
OrderSend(Symbol(),OP_BUYSTOP,lots,bs,3,0,0,"",1394,0,Red);}
}

return(0);
}
//+------------------------------------------------------------------+
 
アカウント:154603氏名:ドミトリー通貨:USD2011年7月12日 14:23
クローズド・トランザクション
チケットオープンタイムタイプサイズ項目価格S / LT / Pクローズタイム価格委員会税金スワップ利益
37055732011.07.12 13:57買う2.16ユーラスド1.39821.39731.40652011.07.12 14:131.39730.000.000.00-194.40
37053282011.07.12 13:19買う2.01ユーラスド1.39241.38991.39482011.07.12 13:491.39480.000.000.00482.40
37053562011.07.12 13:14捌く2.17ユーラスド1.39001.39241.38762011.07.12 13:191.39240.000.000.00-520.80
37052852011.07.12 13:05捌く2.17ユーラスド1.39141.39241.39042011.07.12 13:111.39040.000.000.00217.00
37052782011.07.12 13:04買う2.17ユーラスド1.39241.39141.39342011.07.12 13:051.39140.000.000.00-217.00
37048122011.07.12 11:32買う2.40ユーラスド1.39591.39141.40202011.07.12 13:011.39140.000.000.00-1 080.00
37040302011.07.12 13:01捌く1.88ユーラスド1.39141.39171.39112011.07.12 13:011.39170.000.000.00-56.40
37041582011.07.12 10:22買う2.13ユーラスド1.38961.38981.39582011.07.12 11:301.39580.000.000.001 320.60
37040632011.07.12 10:12買う2.02ユーラスド1.38611.38341.38882011.07.12 10:211.38880.000.000.00545.40
37040202011.07.12 10:05買う1.92ユーラスド1.38481.38341.38592011.07.12 10:121.38590.000.000.00211.20
37040012011.07.12 10:04捌く1.95ユーラスド1.38371.38481.38312011.07.12 10:051.38480.000.000.00-214.50
37035052011.07.12 10:01買う1.82ユーラスド1.38431.38371.38492011.07.12 10:041.38370.000.000.00-109.20
37039202011.07.12 09:52捌く2.04ユーラスド1.38451.38431.37552011.07.12 10:011.38430.000.000.0040.80
37036312011.07.12 09:12捌く1.88ユーラスド1.38921.39351.38492011.07.12 09:501.38490.000.000.00808.40
37035332011.07.12 09:03捌く1.80ユーラスド1.39151.39351.38952011.07.12 09:101.38950.000.000.00360.00
37035062011.07.12 09:02捌く1.82ユーラスド1.39271.39301.39242011.07.12 09:021.39300.000.000.00-54.60
 
マジでおすすめしない。
 
grellストップロスが 出ない
 
ローソク足で損切り
 
または最大値
 
EAのコードを調べて みると、なぜ去勢されてしまったのかがわかると思います。テスター用に書いたので、そこはシンプル です。でも、不思議とうまくいくんです。
 
正直なところ、私はMQLのプログラミングを全く理解していません。