コーディングの方法は? - ページ 186 1...179180181182183184185186187188189190191192193...347 新しいコメント simon rowe 2009.06.22 12:24 #1851 さて、最初の質問です。 #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Magenta extern int MAPeriod=200; extern double iController = 1.386; //---- buffers //double Memory[200]; double ExtMapBuffer1[]; int limit = 200; //---- variables //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { IndicatorBuffers(1); //---- drawing settings SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2); IndicatorShortName( "Antaria_Rising"); //---- initialization done return(0); } int start() { int limit; //ExtMapBuffer1[1] = ExtMapBuffer1[0]; //ExtMapBuffer1[0] = iController; for(int i=(0); i<=(limit-1); i++) { ExtMapBuffer1 = ExtMapBuffer1; } ExtMapBuffer1[0] = iController; return(0); }[/CODE] Above is the code for the indicator. Simply, it draws a line that should be updatable via the EA using the intiially mentioned code: [CODE]temp = iCustom(NULL, 0, "AntariaRising", 200, 1.2, 0, 0); //temp not used. Function returns a double 私は、インジケーターオブジェクトにトラッキングしている変数を更新するための最後のコードを置き換えることを望んでいます。しかし、残りのコードは関係ありません。上記の関数を 実行すると、antariaは1.39またはそれが開始するものから1.2まで位置を移動することを期待します。200という変数を使ったかどうかは覚えていない。ヘッダーとフッターのコメントは削除しましたが、スレーブインジケーター全体はそこにあり、それはすぐ上のコードで意味されるAntariaRisingです。 これは、私が見つけることができた唯一のインジケータオブジェクトと話をする関数でした、そして、私は他の領域で値を読み取るためにそれを使用しています。 How to code? コーディングのヘルプ オジャラEA Roger09 2009.06.22 13:20 #1852 インジケーターコードについて。それは間違っています。 Var. limit equal zero ever. 文字列を削除してください。 int limit; という文字列をstart()から削除してください。 johnray 2009.06.22 13:52 #1853 このコードで私を助けるpls 私はそれが私がそれをしたいときに、このコードで私を助けるために誰かを望むが、私はそれが再び交差しないときに閉じていないストップロスで取引したいので、自動的にそれを閉じますこれは、コードです。 //+------------------------------------------------------------------+ //| JR300.mq4 ///oneloveさん ///フォレックスフォーラム|フォレックスTsd|メタトレーダーフォーラム|</p //+------------------------------------------------------------------+ #property copyright "oneLove" (ワンラブ) #property link "https://www.forex-tsd.com" //---- 入力パラメータ extern double TakeProfit=250.0; extern double Lots=0.1; extern double TrailingStop=35.0; //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int Crossed (double line1 , double line2) { static int last_direction = 0; static int current_direction = 0; if(line1>line2)current_direction = 1; //上方向 if(line1<line2)current_direction=2;//下方向 if(current_direction != last_direction) //変更されました。 { last_direction = current_direction; return (last_direction); } それ以外 { return (0); } } //+------------------------------------------------------------------+ //| エキスパートスタート機能 //+------------------------------------------------------------------+ int start() { //---- int cnt, ticket, total; double shortEma, longEma; if(Bars<100) { Print("bars less than 100"); return(0); } if(テイクプロフィット<10) { Print("TakeProfitが10未満"); return(0); // TakeProfitのチェック } shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0)とします。 longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0); int isCrossed = Crossed (shortEma,longEma); total = OrdersTotal(); if(total < 1) { if(isCrossed == 1) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*ポイント, "私のEA",12345,0,緑); if(ticket>0) { if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice()); else Print("BUY注文の開始エラー :",GetLastError())。 return(0); } if(isCrossed == 2) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0.TakeProfit*Point)。 Bid-TakeProfit*Point, "私のEA",12345,0,赤); if(ticket>0) { if(オーダーセレクト(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); else Print("SELL注文の開始エラー :",GetLastError()); return(0); return(0); } for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())) { if(OrderType()==OP_BUY)// ロングポジションがオープン { // クローズすべきか? if(isCrossed == 2) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // ポジションを閉じる return(0); // 終了 // トレーリングストップのチェック if(TrailingStop>0){ if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(オーダーストップ・ロス()<ビッド-ポイント*トレイリングストップ) { オーダー変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,Bid-Point) ポイント*トレイリングストップ,OrderTakeProfit(),0,緑); return(0); } } } } else // ショートポジションに移動 { // 決済するべきか? if(isCrossed == 1) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet)を実行。 // クローズポジション return(0); // 終了 // トレーリングストップのチェック if(TrailingStop>0){ if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)))をチェックします。|| (OrderStopLoss()==0))です。 { オーダーモディファイ(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop, OrderTakeProfit(),0,Red)。 return(0); } } } } } } return(0); } //+------------------------------------------------------------------+ 生のアイデア 絵馬クロス! How to code? Roger09 2009.06.22 16:41 #1854 これを試してみてください。 //+------------------------------------------------------------------+ //| JR300.mq4 | //| onelove | //| Forex Forum | Forex Tsd | Metatrader Forum | //+------------------------------------------------------------------+ #property copyright "oneLove" #property link "https://www.forex-tsd.com" //---- input parameters extern double TakeProfit=250.0; extern double StopLoss=100.0; extern double Lots=0.1; extern double TrailingStop=35.0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int Crossed (double line1 , double line2) { static int last_direction = 0; static int current_direction = 0; if(line1>line2)current_direction = 1; //up if(line1<line2)current_direction = 2; //down if(current_direction != last_direction) //changed { last_direction = current_direction; return (last_direction); } else { return (0); } } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int cnt, ticket, total; double shortEma, longEma; if(Bars<100) { Print("bars less than 100"); return(0); } if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0); longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0); int isCrossed = Crossed (shortEma,longEma); total = OrdersTotal(); if(total < 1) { if(isCrossed == 1) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+ TakeProfit*Point, "My EA",12345,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } if(isCrossed == 2) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point, Bid-TakeProfit*Point,"My EA",12345,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) // long position is opened { // should it be closed? //if(isCrossed == 2) //{ //OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // close position //return(0); // exit //} // check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid- Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } else // go to short position { // should it be closed? //if(isCrossed == 1) //{ //OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // close position //return(0); // exit //} // check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop, OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } //+------------------------------------------------------------------+ 絵馬クロス! EAへのパスワード保護 How to code? johnray 2009.06.22 18:38 #1855 感謝 Roger09: これを試してみてください。//+------------------------------------------------------------------+ //| JR300.mq4 | //| onelove | //| Forex Forum | Forex Tsd | Metatrader Forum | //+------------------------------------------------------------------+ #property copyright "oneLove" #property link "https://www.forex-tsd.com" //---- input parameters extern double TakeProfit=250.0; extern double StopLoss=100.0; extern double Lots=0.1; extern double TrailingStop=35.0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } int Crossed (double line1 , double line2) { static int last_direction = 0; static int current_direction = 0; if(line1>line2)current_direction = 1; //up if(line1<line2)current_direction = 2; //down if(current_direction != last_direction) //changed { last_direction = current_direction; return (last_direction); } else { return (0); } } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- int cnt, ticket, total; double shortEma, longEma; if(Bars<100) { Print("bars less than 100"); return(0); } if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0); longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0); int isCrossed = Crossed (shortEma,longEma); total = OrdersTotal(); if(total < 1) { if(isCrossed == 1) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+ TakeProfit*Point, "My EA",12345,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("BUY order opened : ",OrderOpenPrice()); } else Print("Error opening BUY order : ",GetLastError()); return(0); } if(isCrossed == 2) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point, Bid-TakeProfit*Point,"My EA",12345,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ",GetLastError()); return(0); } return(0); } for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) { if(OrderType()==OP_BUY) // long position is opened { // should it be closed? //if(isCrossed == 2) //{ //OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // close position //return(0); // exit //} // check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid- Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } else // go to short position { // should it be closed? //if(isCrossed == 1) //{ //OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // close position //return(0); // exit //} // check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop, OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); } //+------------------------------------------------------------------+ roger09 ありがとうございます。 simon rowe 2009.06.23 00:24 #1856 Rogerさん、ありがとうございます!私のstart関数から 2つ目のリミット宣言を削除しました。コンパイラがそれを許可していたことに驚きましたが、私のプログラムには目立った影響はなかったのです。 しかし、私のEAからそのインジケータの実行インスタンスを変更する方法がわかりません。APIが現在実行中のインジケータに情報を渡すことを許可していないことを確認するか、またはその方法が非常にありがたいです。 ありがとうございます。 dznmrd 2009.06.24 02:04 #1857 yingli: 私はここにいくつかの助けを得るためにこのトレッドを開始します。私は添付の指標のためのコードを学習している.しかし、それはうまくいきませんでした。このインジケータはとても信頼できるもので、もし誰かがこのインジケータのEAを作ることができれば、それはほとんど聖杯のようなものです.tia.基本的な流れは 1.open赤い矢印が表示されたときに位置を売っています。 2.白い矢印が表示されたら買いポジションをオープンし、自動的にすべてのTH ESELLポジション/ポジションをクローズします。 3.任意の時間枠に適用されます。 4.noストップロス。 5.add順序機能。 回答お待ちしております。 //+------------------------------------------------------------------+ //| IINWMARROWS.mq4||をベースにしたものです。 //| EMA_CROSS.mq4に基づいています。 || Copyright ?2006, MetaQuotes Software Corp.| //| フォレックス・トレーディング・ソフトウェアフォレックス・トレーディング・プラットフォーム MetaTrader4 || 最終更新者:Iin Zulkarnain //+------------------------------------------------------------------+ #property copyright "Copyright ?2006, MetaQuotes Software Corp."(コピーライト:2006年、メタクォーツ・ソフトウェア社)。 #property link "http://www.metaquotes.net" //---- #property indicator_chart_window(インジケーターチャートウィンドウ #property indicator_buffers 2 (インジケーターバッファー2) #property indicator_color1 ホワイト #property indicator_color2 赤色 #property indicator_width1 2 (幅) #property indicator_width2 2 (インジケータ幅2 //---- double CrossUp[]; double CrossDown[]; extern int FasterMode=3; /0=sma, 1=ema, 2=smma, 3=lwma extern int FasterMA= 3; extern int SlowerMode=3; //0=sma, 1=ema, 2=smma, 3=lwma extern int SlowerMA= 3; //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ int init() { //---- インジケータ SetIndexStyle(0, DRAW_ARROW, EMPTY).SetIndexStyle(0)を設定します。 SetIndexArrow(0, 233); SetIndexBuffer(0, CrossUp); SetIndexStyle(1, DRAW_ARROW, EMPTY).を設定します。 SetIndexArrow(1, 234); SetIndexBuffer(1, CrossDown); //---- return(0); } //+------------------------------------------------------------------+ //| カスタムインジケータ初期化関数 //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| カスタムインジケーターイテレーション関数 //+------------------------------------------------------------------+ int start() { int limit, i, counter; double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter; double Range, AvgRange; int counted_bars=IndicatorCounted(); //---- エラーの可能性をチェック if(counted_bars<0) return(-1); //---- 最後にカウントされたバーが再カウントされる if(counted_bars>0) counted_bars--; //---- limit=Bars-counted_bars; for(i=0; i<=limit; i++) { counter=i; Range=0; AvgRange=0; for(counter=i ;counter<=i+9;counter++) { AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]); Range=AvgRange/10; fastMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i); fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1); fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1); //---- slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i); slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1); //------- slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1); slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1); if ((fasterMAnow > slowerMAnow) && (fasterMAprevious・slowerMAafter)) { CrossUp=Low - Range*0.5; } else if ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter)) { CrossDown=High+Range*0.5。 } } return(0); } //+------------------------------------------------------------------+このスレッドは、正しいコーディングの仕方を学ぶためのものです。 このインディケータのアラートコードを誰か助けてくれませんか? 削除済み 2009.06.24 10:18 #1858 George's Oscar Calculator - 誰かインジケーターを作ってくれないかな? こんにちは、皆さん。 ジョージ・スミスのForex Made-EZをご存知の方がいらっしゃるかどうか分かりませんが、現在彼の作品をレビューしています。 私は今、彼の作品を見直しているのですが、彼が使っているオスカーオシレーターのインジケータをコード化した人がいるのでしょうか? 計算式は A = 過去8本の最高値(この1本を含む) B = 過去8本の安値(この1本を含む) C = 現在のバーの終値 X = 前回のオシレータ値(オスカー) 今日のオシレーターは、(C-B)を(A-B)で割って100を掛けたものになります。 次に、この大まかな数値(Yと呼ぶ)を次のように「平滑化」します。 最終的なオシレータの数値 = ((X÷3) × 2) + (Y÷3). どなたか、これをコード化したことのある方、あるいはコード化できる方がいらっしゃいましたら、ぜひ教えてください。 スティーブ dedreko 2009.06.26 23:53 #1859 インバーテッド・トレーリングストップ こんにちは。 あるアイデアについて教えてください。 私は自分のEAでトレーリングストップ(3ステップトレーリング)を使っていますが、損失を防ぐために反転させたいと考えています。 説明します。 私は最初のストップロスで 注文を出します。 もし取引が損切り方向に15ピップ進み、10ピップ戻ったら取引を終了します(最初のステップ)。 もし取引が30ピップス損失方向に行き、15ピップス戻ってきたら、取引を終了する(第二段階)。 というような感じです。 ありがとうございました。 fosgate_r 2009.06.26 23:59 #1860 dedreko: こんにちは。あるアイデアに協力してほしい。 私は自分のEAでトレーリングストップ(3ステップトレーリング)を使っていますが、損失を保護するために反転したことをしたいのです。 説明します。 私は最初のストップロスで注文を出します。 もし取引が損切り方向に15ピップ進み、10ピップ戻ったら取引を終了します(最初のステップ)。 もし取引が30ピップス損失方向に行き、15ピップス戻ってきたら、取引を終了する(第二段階)。 こんな感じです。 ありがとうございました これは私にとって新しいことです。 ということは、負けトレードの決済は、常に跳ね返るまで待つ必要があるのですね? バウンスバックしない場合はどうなんでしょうか? 最初のSLでクローズするのでしょうか? 1...179180181182183184185186187188189190191192193...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
さて、最初の質問です。
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Magenta
extern int MAPeriod=200;
extern double iController = 1.386;
//---- buffers
//double Memory[200];
double ExtMapBuffer1[];
int limit = 200;
//---- variables
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorBuffers(1);
//---- drawing settings
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
IndicatorShortName( "Antaria_Rising");
//---- initialization done
return(0);
}
int start()
{
int limit;
//ExtMapBuffer1[1] = ExtMapBuffer1[0];
//ExtMapBuffer1[0] = iController;
for(int i=(0); i<=(limit-1); i++)
{
ExtMapBuffer1 = ExtMapBuffer1;
}
ExtMapBuffer1[0] = iController;
return(0);
}[/CODE]
Above is the code for the indicator. Simply, it draws a line that should be updatable via the EA using the intiially mentioned code:
[CODE]temp = iCustom(NULL, 0, "AntariaRising", 200, 1.2, 0, 0); //temp not used. Function returns a double私は、インジケーターオブジェクトにトラッキングしている変数を更新するための最後のコードを置き換えることを望んでいます。しかし、残りのコードは関係ありません。上記の関数を 実行すると、antariaは1.39またはそれが開始するものから1.2まで位置を移動することを期待します。200という変数を使ったかどうかは覚えていない。ヘッダーとフッターのコメントは削除しましたが、スレーブインジケーター全体はそこにあり、それはすぐ上のコードで意味されるAntariaRisingです。
これは、私が見つけることができた唯一のインジケータオブジェクトと話をする関数でした、そして、私は他の領域で値を読み取るためにそれを使用しています。
インジケーターコードについて。それは間違っています。
Var. limit equal zero ever.
文字列を削除してください。
int limit;
という文字列をstart()から削除してください。
このコードで私を助けるpls
私はそれが私がそれをしたいときに、このコードで私を助けるために誰かを望むが、私はそれが再び交差しないときに閉じていないストップロスで取引したいので、自動的にそれを閉じますこれは、コードです。
//+------------------------------------------------------------------+
//| JR300.mq4
///oneloveさん
///フォレックスフォーラム|フォレックスTsd|メタトレーダーフォーラム|</p
//+------------------------------------------------------------------+
#property copyright "oneLove" (ワンラブ)
#property link "https://www.forex-tsd.com"
//---- 入力パラメータ
extern double TakeProfit=250.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(line1>line2)current_direction = 1; //上方向
if(line1<line2)current_direction=2;//下方向
if(current_direction != last_direction) //変更されました。
{
last_direction = current_direction;
return (last_direction);
}
それ以外
{
return (0);
}
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double shortEma, longEma;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(テイクプロフィット<10)
{
Print("TakeProfitが10未満");
return(0); // TakeProfitのチェック
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0)とします。
longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
int isCrossed = Crossed (shortEma,longEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*ポイント,
"私のEA",12345,0,緑);
if(ticket>0)
{
if(オーダーセレクト(チケット,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order opened : ",OrderOpenPrice());
else Print("BUY注文の開始エラー :",GetLastError())。
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0.TakeProfit*Point)。
Bid-TakeProfit*Point, "私のEA",12345,0,赤);
if(ticket>0)
{
if(オーダーセレクト(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order opened : ",OrderOpenPrice());
else Print("SELL注文の開始エラー :",GetLastError());
return(0);
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()))
{
if(OrderType()==OP_BUY)// ロングポジションがオープン
{
// クローズすべきか?
if(isCrossed == 2)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);
// ポジションを閉じる
return(0); // 終了
// トレーリングストップのチェック
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(オーダーストップ・ロス()<ビッド-ポイント*トレイリングストップ)
{
オーダー変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,Bid-Point)
ポイント*トレイリングストップ,OrderTakeProfit(),0,緑);
return(0);
}
}
}
}
else // ショートポジションに移動
{
// 決済するべきか?
if(isCrossed == 1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet)を実行。
// クローズポジション
return(0); // 終了
// トレーリングストップのチェック
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)))をチェックします。||
(OrderStopLoss()==0))です。
{
オーダーモディファイ(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red)。
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+
これを試してみてください。
//| JR300.mq4 |
//| onelove |
//| Forex Forum | Forex Tsd | Metatrader Forum |
//+------------------------------------------------------------------+
#property copyright "oneLove"
#property link "https://www.forex-tsd.com"
//---- input parameters
extern double TakeProfit=250.0;
extern double StopLoss=100.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double shortEma, longEma;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
int isCrossed = Crossed (shortEma,longEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+ TakeProfit*Point,
"My EA",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,
Bid-TakeProfit*Point,"My EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
//if(isCrossed == 2)
//{
//OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
//if(isCrossed == 1)
//{
//OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||
(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+感謝
これを試してみてください。
//| JR300.mq4 |
//| onelove |
//| Forex Forum | Forex Tsd | Metatrader Forum |
//+------------------------------------------------------------------+
#property copyright "oneLove"
#property link "https://www.forex-tsd.com"
//---- input parameters
extern double TakeProfit=250.0;
extern double StopLoss=100.0;
extern double Lots=0.1;
extern double TrailingStop=35.0;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (double line1 , double line2)
{
static int last_direction = 0;
static int current_direction = 0;
if(line1>line2)current_direction = 1; //up
if(line1<line2)current_direction = 2; //down
if(current_direction != last_direction) //changed
{
last_direction = current_direction;
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int cnt, ticket, total;
double shortEma, longEma;
if(Bars<100)
{
Print("bars less than 100");
return(0);
}
if(TakeProfit<10)
{
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
shortEma = iMA(NULL,0,1,0,MODE_EMA,PRICE_CLOSE,0);
longEma = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,0);
int isCrossed = Crossed (shortEma,longEma);
total = OrdersTotal();
if(total < 1)
{
if(isCrossed == 1)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+ TakeProfit*Point,
"My EA",12345,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,
Bid-TakeProfit*Point,"My EA",12345,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES ))
Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
}
return(0);
}
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?
//if(isCrossed == 2)
//{
//OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-
Point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else // go to short position
{
// should it be closed?
//if(isCrossed == 1)
//{
//OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ;
// close position
//return(0); // exit
//}
// check for trailing stop
if(TrailingStop>0){
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) ||
(OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,
OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
//+------------------------------------------------------------------+roger09 ありがとうございます。
Rogerさん、ありがとうございます!私のstart関数から 2つ目のリミット宣言を削除しました。コンパイラがそれを許可していたことに驚きましたが、私のプログラムには目立った影響はなかったのです。
しかし、私のEAからそのインジケータの実行インスタンスを変更する方法がわかりません。APIが現在実行中のインジケータに情報を渡すことを許可していないことを確認するか、またはその方法が非常にありがたいです。
ありがとうございます。
私はここにいくつかの助けを得るためにこのトレッドを開始します。私は添付の指標のためのコードを学習している.しかし、それはうまくいきませんでした。このインジケータはとても信頼できるもので、もし誰かがこのインジケータのEAを作ることができれば、それはほとんど聖杯のようなものです.tia.
基本的な流れは
1.open赤い矢印が表示されたときに位置を売っています。
2.白い矢印が表示されたら買いポジションをオープンし、自動的にすべてのTH ESELLポジション/ポジションをクローズします。
3.任意の時間枠に適用されます。
4.noストップロス。
5.add順序機能。
回答お待ちしております。
//+------------------------------------------------------------------+
//| IINWMARROWS.mq4||をベースにしたものです。
//| EMA_CROSS.mq4に基づいています。
|| Copyright ?2006, MetaQuotes Software Corp.|
//| フォレックス・トレーディング・ソフトウェアフォレックス・トレーディング・プラットフォーム MetaTrader4
|| 最終更新者:Iin Zulkarnain
//+------------------------------------------------------------------+
#property copyright "Copyright ?2006, MetaQuotes Software Corp."(コピーライト:2006年、メタクォーツ・ソフトウェア社)。
#property link "http://www.metaquotes.net"
//----
#property indicator_chart_window(インジケーターチャートウィンドウ
#property indicator_buffers 2 (インジケーターバッファー2)
#property indicator_color1 ホワイト
#property indicator_color2 赤色
#property indicator_width1 2 (幅)
#property indicator_width2 2 (インジケータ幅2
//----
double CrossUp[];
double CrossDown[];
extern int FasterMode=3; /0=sma, 1=ema, 2=smma, 3=lwma
extern int FasterMA= 3;
extern int SlowerMode=3; //0=sma, 1=ema, 2=smma, 3=lwma
extern int SlowerMA= 3;
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int init()
{
//---- インジケータ
SetIndexStyle(0, DRAW_ARROW, EMPTY).SetIndexStyle(0)を設定します。
SetIndexArrow(0, 233);
SetIndexBuffer(0, CrossUp);
SetIndexStyle(1, DRAW_ARROW, EMPTY).を設定します。
SetIndexArrow(1, 234);
SetIndexBuffer(1, CrossDown);
//----
return(0);
}
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| カスタムインジケーターイテレーション関数
//+------------------------------------------------------------------+
int start()
{
int limit, i, counter;
double fasterMAnow, slowerMAnow, fasterMAprevious, slowerMAprevious, fasterMAafter, slowerMAafter;
double Range, AvgRange;
int counted_bars=IndicatorCounted();
//---- エラーの可能性をチェック
if(counted_bars<0) return(-1);
//---- 最後にカウントされたバーが再カウントされる
if(counted_bars>0) counted_bars--;
//----
limit=Bars-counted_bars;
for(i=0; i<=limit; i++)
{
counter=i;
Range=0;
AvgRange=0;
for(counter=i ;counter<=i+9;counter++)
{
AvgRange=AvgRange+MathAbs(High[counter]-Low[counter]);
Range=AvgRange/10;
fastMAnow=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i);
fasterMAprevious=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i+1);
fasterMAafter=iMA(NULL, 0, FasterMA, 0, FasterMode, PRICE_CLOSE, i-1);
//----
slowerMAnow=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i);
slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1); //------- slowerMAprevious=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i+1);
slowerMAafter=iMA(NULL, 0, SlowerMA, 0, SlowerMode, PRICE_OPEN, i-1);
if ((fasterMAnow > slowerMAnow) && (fasterMAprevious・slowerMAafter))
{
CrossUp=Low - Range*0.5;
}
else if ((fasterMAnow slowerMAprevious) && (fasterMAafter < slowerMAafter))
{
CrossDown=High+Range*0.5。
}
}
return(0);
}
//+------------------------------------------------------------------+このスレッドは、正しいコーディングの仕方を学ぶためのものです。このインディケータのアラートコードを誰か助けてくれませんか?
George's Oscar Calculator - 誰かインジケーターを作ってくれないかな?
こんにちは、皆さん。
ジョージ・スミスのForex Made-EZをご存知の方がいらっしゃるかどうか分かりませんが、現在彼の作品をレビューしています。
私は今、彼の作品を見直しているのですが、彼が使っているオスカーオシレーターのインジケータをコード化した人がいるのでしょうか?
計算式は
A = 過去8本の最高値(この1本を含む)
B = 過去8本の安値(この1本を含む)
C = 現在のバーの終値
X = 前回のオシレータ値(オスカー)
今日のオシレーターは、(C-B)を(A-B)で割って100を掛けたものになります。
次に、この大まかな数値(Yと呼ぶ)を次のように「平滑化」します。
最終的なオシレータの数値 = ((X÷3) × 2) + (Y÷3).
どなたか、これをコード化したことのある方、あるいはコード化できる方がいらっしゃいましたら、ぜひ教えてください。
スティーブ
インバーテッド・トレーリングストップ
こんにちは。
あるアイデアについて教えてください。
私は自分のEAでトレーリングストップ(3ステップトレーリング)を使っていますが、損失を防ぐために反転させたいと考えています。
説明します。
私は最初のストップロスで 注文を出します。
もし取引が損切り方向に15ピップ進み、10ピップ戻ったら取引を終了します(最初のステップ)。
もし取引が30ピップス損失方向に行き、15ピップス戻ってきたら、取引を終了する(第二段階)。
というような感じです。
ありがとうございました。
こんにちは。
あるアイデアに協力してほしい。
私は自分のEAでトレーリングストップ(3ステップトレーリング)を使っていますが、損失を保護するために反転したことをしたいのです。
説明します。
私は最初のストップロスで注文を出します。
もし取引が損切り方向に15ピップ進み、10ピップ戻ったら取引を終了します(最初のステップ)。
もし取引が30ピップス損失方向に行き、15ピップス戻ってきたら、取引を終了する(第二段階)。
こんな感じです。
ありがとうございましたこれは私にとって新しいことです。
ということは、負けトレードの決済は、常に跳ね返るまで待つ必要があるのですね?
バウンスバックしない場合はどうなんでしょうか?
最初のSLでクローズするのでしょうか?