[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 412 1...405406407408409410411412413414415416417418419...631 新しいコメント Azamat Mullayanov 2012.10.04 10:04 #4111 皆さんこんにちは!ワグルエキスパートを書いている時、より正確な出口ポイントを探していて、RSI(8)とADX(25)のクロスに出会いました。デモの手動取引では、視覚的にすべてがうまくいっています。 RSI(8)とADX(25)の交差条件の書き方について質問です DI + 例えば、RSI(8)には0から100までの境界があり、ADX(25)には境界がない場合。つまり、境界がないチャートにADXを投げ、その上にRSIを投げれば、RSIは最大と最小ADXでスケールします もしADXで0から100まで境界を指定すれば、RSIとの交差を明確にできるものはごく少数になります。 ADXでスケーリングしたときのRSIの値を定義することは可能でしょうか。 削除済み 2012.10.04 10:06 #4112 PapaYozh: いいえ?...差し支えなければ、もう少し詳しいご回答を...。そして、WindowHandle関数が何のためにあるのかを明確にするために、少なくとも簡単なスクリプトを例として示していただけると幸いです。 ilunga 2012.10.04 10:13 #4113 drimara: つまり、境界線を指定せずにADXをチャートに投げ、その上にRSIを投げれば、RSIは最大と最小のADXでスケールします。ADXが0から100の境界線で指定されている場合、ADXとRSIの間に明らかなクロスオーバーはほとんどないでしょう。ADXでスケーリングしたときのRSIの値を定義することは可能でしょうか。 そして、それを左右に動かすと、クロスオーバーポイントが迷走し始めます asasusa 2012.10.04 10:34 #4114 iCustomで接続した場合、非標準のインジケータのパラメータ数に制限はありますか? パラメータが8個ほどあるインジケータがあるのですが、パラメータをすべて正しく入力し、何度もチェックしたのですが、コンパイル時にエラー「)」が出たままです。- wrong parameters count D:\InstaTrader⇄Experts⇄2.mq4 (11, 280) ilunga 2012.10.04 10:42 #4115 sss2019: iCustomで接続した場合、非標準のインジケータのパラメータ数に制限はありますか? パラメータが8個ほどあるインジケータがあるのですが、パラメータをすべて正しく入力し、何度もチェックしたのですが、コンパイル時にエラー「)」が出たままです。- wrong parameters count D:\InstaTrader⇄Experts⇄2.mq4 (11, 280) インジケータにコード+入力パラメータを表示 PapaYozh 2012.10.04 11:02 #4116 7777877: ?...差し支えなければ、もう少し詳しいご回答を...。また、WindowHandle関数が何のためにあるのかを理解するために、少なくともいくつかの簡単なスクリプトを例として示していただけると幸いです。 今のあなたの知識レベルでは、あまり必要ないのでは? プログラマーになりたいという思いがあるなら、Googleの 力を借りて科学を噛みしめましょう。クエリ "ウィンドウ記述子 site:mql4.com" 削除済み 2012.10.04 11:27 #4117 プログラミングの達人に教えていただきたいのですが、このアドバイザーを作ることは現実的なのでしょうか? ilunga 2012.10.04 11:34 #4118 stater: プログラミングの第一人者に、このアドバイザーを作ることは現実的なのか、私の質問について教えてくださいとお願いしています。 望めば、何でも可能です。 をご覧ください。 1)バーオープン制御 2)オーダーセンド 試行錯誤し、達人が修正する neo777 2012.10.04 11:56 #4119 クロスだけでなく、ローソクのCLOSEで注文が開くようにするEAを紹介します。 誰が事前にありがとうを助けるでしょう。 //+------------------------------------------------------------------+ //| RSI_MA.mq4||||。 //| Copyright © 2008, AEliseev k800elik@gmail.com |. //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright"Copyright © 2008, Andrey E. k800elik@gmail.com"。 #プロパティリンク "http://www.metaquotes.net" //---- 入力パラメータ extern CCI_Per=14; extern MA_Per=20; extern CCI_close_Per=14; extern double TakeProfit=500; extern double StopLoss=150; extern double Lots=0.01; extern inttern Deposit=1000; extern bool MM=false; extern inttern _MagicNumber=131313; extern int_Sleep=5000; int LotA=1, Err=0; int j=0; var2,var1; int counter=0; int ticketです。 bool var3; bool order=false。 //+------------------------------------------------------------------+ //| エキスパート初期化関数 //+------------------------------------------------------------------+ int init() { Comment("CCI_MA v1.5 © 2008, Andrey E. k800elik@gmail.com")。 return(0)です。 } //+------------------------------------------------------------------+ //| 専門家による初期化関数 //+------------------------------------------------------------------+ int deinit() { /* int i, a1, a2; //---- if (注文合計()>0) { for (i=0; i==OrdersTotal(); i++) { OrderSelect(i,SELECT_BY_POS); if (OrderMagicNumber()==131313) { a1=OrderClose(LotA*Lots,Ask,5,Red)となります。 //a2=OrderClose(var1,LotA*Lots,Ask,5,Red)となります。 } } }*/ return(0)です。 } //+------------------------------------------------------------------+ //| エキスパートスタート機能 //+------------------------------------------------------------------+ int start() { //---- if (isNewBar())EveryBar()です。 EveryTick()です。 //---- return(0)です。 } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //|新しいバーをチェックする //+------------------------------------------------------------------+ bool isNewBar() { static datetime TimeBar=0; bool flag=false。 if(TimeBar!=Time[0])とする。 { TimeBar=Time[0]です。 flag=true とする。 } return(flag)です。 } //+------------------------------------------------------------------+ //| 新しいバーが表示されたらアクションを実行する。 //+------------------------------------------------------------------+ void EveryBar() { // Print("新しいバーが届きました!") double MA[100]、CCI[100]、CCIclose[100]、StandDevi[100]。 int i,limit=ArraySize(CCI); ダブルSL、TP スリープ(_Sleep)。 SL = NormalizeDouble(Ask - StopLoss*Point, Digits)です。 TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)です。 for(i=0; i<limit; i++) { CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i); CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i); MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i); } // 新しい注文を出すのに十分な資金があるかどうかチェックする if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money.フリーマージン = ", AccountFreeMargin()); return(0)です。 } //================================================================================= int _GetLastError = 0, _OrdersTotal = OrdersTotal(); //----- すべてのオープンポジションに目を通す for ( int z = _OrdersTotal - 1; z >= 0; z -- ) { //---- 位置の選択中にエラーが発生した場合、次の位置へ進む if ( !OrderSelect( z, SELECT_BY_POS ) ) { _GetLastError = GetLastError()。 Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError); を続ける。 } // 位置が現在のシンボルのために開かれていない場合、それはスキップされます。 if ( OrderSymbol() != Symbol() ) continue; // MagicNumber が _MagicNumber と等しくない場合、スキップする。 // この位置 if ( OrderMagicNumber() != _MagicNumber ) continue; //- BAYポジションが開いている場合。 if ( OrderType() == OP_BUY ) ) { //---- CCIがライン190を下向きにクロスした場合 if (((CCIclose[2]>190) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2]) ). { //---- クローズ位置 if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 10, Green ) ) { _GetLastError = GetLastError()。 Print("OrderCloseエラー# , _GetLastError ); Err=1です。 return(-1)です。 } } // シグナルが変化しなかった場合、終了 - 開放するには早すぎる。 //新しい位置 さもなくば { return(0); }. } //---- 売りポジションが開かれた場合。 if ( OrderType() == OP_SELL ) { //---- CCIが上方のライン-190を越えたら。 if (((CCIclose[2]<-190) && (CCIclose[1]>=-300)) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2]))) { //---- クローズ位置 if(!OrderClose( OrderTicket(), OrderLots(), Ask, 10, Red ) ) { _GetLastError = GetLastError()。 Print("OrderClose error # ", _GetLastError ); Err=2; return(-1)です。 } } // シグナルが変化しなかった場合、終了 - 開放するには早すぎる。 // 新しい位置 else return(0); } } //+------------------------------------------------------------------+ //| 実行がこのポイントに達した場合、開いているポジションはありません。 //| ポジションを開くことが可能かどうかをチェックします。 //+------------------------------------------------------------------+ スリープ(_Sleep)。 CCIがMACDを下から上へクロスした場合 //----。 SL = NormalizeDouble(Bid - StopLoss*Point, Digits)です。 TP = NormalizeDouble(Bid + TakeProfit*Point, Digits)です。 if ((CCI[1]>MA[リミット- MA_Per-1]) && (CCI[2]<MA[limit-MA_Per-2])) { //---- オープン BAY ポジション if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 5, SL, TP, "CCI_test_buy", _MagicNumber, 0, Green ) < 0 ) { _GetLastError = GetLastError()。 Print( "OrderSend OP_BUY error # ", _GetLastError ); Err=3。 return(-1)です。 } return(0)です。 } CCIがMACDを上から下までクロスした場合 //----。 SL = NormalizeDouble(Ask + StopLoss*Point, Digits)です。 TP = NormalizeDouble(Ask - TakeProfit*Point, Digits)です。 if ((CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>MA[limit-MA_Per-2])) { //----- 売りポジションをオープン if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 5, SL, TP, "CCI_test_close", _MagicNumber, 0, Red ) < 0 ) { _GetLastError = GetLastError()。 Print("OrderSend OP_SELL error # ", _GetLastError ); Err=4; return(-1)です。 } return(0)です。 } } //+------------------------------------------------------------------+ //| 価格が変わるごとに計算を実行する|? //+------------------------------------------------------------------+ void EveryTick() { int i; if (MM==true) { if (AccountBalance()>(2*Deposit))LotA=2です。 if (AccountBalance()>(3*Deposit))LotA=3。 if (AccountBalance()>(4*Deposit))LotA=4です。 if (AccountBalance()>(5*Deposit))LotA=5。 if (AccountBalance()>(6*Deposit))LotA=6; if (AccountBalance()>(6*Deposit); LotA=6; if (AccountBalance()>(7*Deposit))LotA=7。 if (AccountBalance()>(8*Deposit))LotA=8。 if (AccountBalance()>(9*Deposit))LotA=9。 if (AccountBalance()>(10*Deposit))LotA=10です。 if (AccountBalance()>(11*Deposit))LotA=11。 if (AccountBalance()>(12*Deposit))LotA=12です。 if (AccountBalance()>(13*Deposit))LotA=13。 if (AccountBalance()>(14*Deposit))LotA=14。 if (AccountBalance()>(15*Deposit))LotA=15。 if (AccountBalance()>(16*Deposit))LotA=16。 if (AccountBalance()>(17*Deposit))LotA=17。 if (AccountBalance()>(18*Deposit))LotA=18。 if (AccountBalance()>(19*Deposit))LotA=19。 if (AccountBalance()>(20*Deposit))LotA=20です。 } int _GetLastError = 0, _OrdersTotal = OrdersTotal(); int z; ダブルSL、TP double MA[100]、CCI[100]、CCIclose[100]、StandDevi[100]。 int limit=ArraySize(CCI)。 for(i=0; i<limit; i++) { CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i); CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i); MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i); } スイッチ(Err) { ケース1 for ( z=_OrdersTotal - 1; z >= 0; z -- ) { if ( !OrderSelect( z, SELECT_BY_POS ) ) { _GetLastError = GetLastError()。 Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError); を続ける。 } if ( OrderSymbol() != Symbol() ) continue; if ( OrderMagicNumber() != _MagicNumber ) continue; if ( OrderType() == OP_BUY ) ) { if (((CCIclose[2]>300) && (CCIclose[1]<=300) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2]) )) { if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) ) { _GetLastError = GetLastError()。 Print("CASE OrderClose error # , _GetLastError ); Err=1です。 return(-1)です。 } else Err=0; } } } が壊れる。 //============================================================================= の場合 2. for ( z=_OrdersTotal - 1; z >= 0; z -- ) { if ( !OrderSelect( z, SELECT_BY_POS ) ) { _GetLastError = GetLastError()。 Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError); を続ける。 } if ( OrderSymbol() != Symbol() ) continue; if ( OrderMagicNumber() != _MagicNumber ) continue; if ( OrderType() == OP_SELL ) { if (((CCIclose[2]<-300) && (CCIclose[1]>=-300) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2]))) { if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red ) ) { _GetLastError = GetLastError()。 Print("CASE OrderClose error # ", _GetLastError ); Err=2; return(-1)です。 } else Err=0; } } } が壊れる。 //============================================================================== ケース 3. SL = NormalizeDouble(Bid - StopLoss*Point, Digits)です。 TP = NormalizeDouble(Bid + TakeProfit*Point, Digits)です。 if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 7, SL, TP, "AI_test_buy", _MagicNumber, 0, Green ) < 0 ) { _GetLastError = GetLastError()。 Print( "CASE OrderSend OP_BUY error # ", _GetLastError ); Err=3。 return(-1)です。 } else Err=0; が壊れる。 //=================================================================================== ケース 4. SL = NormalizeDouble(Ask + StopLoss*Point, Digits)です。 TP = NormalizeDouble(Ask - TakeProfit*Point, Digits)です。 if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 7, SL, TP, "AI_test_close", _MagicNumber, 0, Red ) < 0 ) { _GetLastError = GetLastError()。 Print("CASE OrderSend OP_SELL error # ", _GetLastError ); Err=4; return(-1)です。 } else Err=0; が壊れる。 } } [ARCHIVE!] Any rookie question, どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 初心者の方からの質問 MQL4 MT4 MetaTrader ilunga 2012.10.04 12:02 #4120 Neo777:クロスだけでなく、ローソクのCLOSEで注文が開くようにするEAを紹介します。注文の開封方法を教えてほしい。 また、このティックでバーが閉じることをどうやって知るつもりなのでしょうか?新しいバーの 開店によってかもしれませんね。 ボタンSRCでコードが挿入されます 1...405406407408409410411412413414415416417418419...631 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
皆さんこんにちは!ワグルエキスパートを書いている時、より正確な出口ポイントを探していて、RSI(8)とADX(25)のクロスに出会いました。デモの手動取引では、視覚的にすべてがうまくいっています。
RSI(8)とADX(25)の交差条件の書き方について質問です DI + 例えば、RSI(8)には0から100までの境界があり、ADX(25)には境界がない場合。つまり、境界がないチャートにADXを投げ、その上にRSIを投げれば、RSIは最大と最小ADXでスケールします もしADXで0から100まで境界を指定すれば、RSIとの交差を明確にできるものはごく少数になります。
ADXでスケーリングしたときのRSIの値を定義することは可能でしょうか。
いいえ
ADXでスケーリングしたときのRSIの値を定義することは可能でしょうか。
パラメータが8個ほどあるインジケータがあるのですが、パラメータをすべて正しく入力し、何度もチェックしたのですが、コンパイル時にエラー「)」が出たままです。- wrong parameters count D:\InstaTrader⇄Experts⇄2.mq4 (11, 280)
iCustomで接続した場合、非標準のインジケータのパラメータ数に制限はありますか?
パラメータが8個ほどあるインジケータがあるのですが、パラメータをすべて正しく入力し、何度もチェックしたのですが、コンパイル時にエラー「)」が出たままです。- wrong parameters count D:\InstaTrader⇄Experts⇄2.mq4 (11, 280)
?...差し支えなければ、もう少し詳しいご回答を...。また、WindowHandle関数が何のためにあるのかを理解するために、少なくともいくつかの簡単なスクリプトを例として示していただけると幸いです。
今のあなたの知識レベルでは、あまり必要ないのでは?
プログラマーになりたいという思いがあるなら、Googleの 力を借りて科学を噛みしめましょう。クエリ "ウィンドウ記述子 site:mql4.com"
プログラミングの第一人者に、このアドバイザーを作ることは現実的なのか、私の質問について教えてくださいとお願いしています。
望めば、何でも可能です。
をご覧ください。
1)バーオープン制御
2)オーダーセンド
試行錯誤し、達人が修正する
クロスだけでなく、ローソクのCLOSEで注文が開くようにするEAを紹介します。
誰が事前にありがとうを助けるでしょう。
//+------------------------------------------------------------------+
//| RSI_MA.mq4||||。
//| Copyright © 2008, AEliseev k800elik@gmail.com |.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright"Copyright © 2008, Andrey E. k800elik@gmail.com"。
#プロパティリンク "http://www.metaquotes.net"
//---- 入力パラメータ
extern CCI_Per=14;
extern MA_Per=20;
extern CCI_close_Per=14;
extern double TakeProfit=500;
extern double StopLoss=150;
extern double Lots=0.01;
extern inttern Deposit=1000;
extern bool MM=false;
extern inttern _MagicNumber=131313;
extern int_Sleep=5000;
int LotA=1, Err=0;
int j=0; var2,var1;
int counter=0;
int ticketです。
bool var3;
bool order=false。
//+------------------------------------------------------------------+
//| エキスパート初期化関数
//+------------------------------------------------------------------+
int init()
{
Comment("CCI_MA v1.5 © 2008, Andrey E. k800elik@gmail.com")。
return(0)です。
}
//+------------------------------------------------------------------+
//| 専門家による初期化関数
//+------------------------------------------------------------------+
int deinit()
{
/* int i, a1, a2;
//----
if (注文合計()>0)
{
for (i=0; i==OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS);
if (OrderMagicNumber()==131313)
{
a1=OrderClose(LotA*Lots,Ask,5,Red)となります。
//a2=OrderClose(var1,LotA*Lots,Ask,5,Red)となります。
}
}
}*/
return(0)です。
}
//+------------------------------------------------------------------+
//| エキスパートスタート機能
//+------------------------------------------------------------------+
int start()
{
//----
if (isNewBar())EveryBar()です。
EveryTick()です。
//----
return(0)です。
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|新しいバーをチェックする
//+------------------------------------------------------------------+
bool isNewBar()
{ static datetime TimeBar=0;
bool flag=false。
if(TimeBar!=Time[0])とする。
{
TimeBar=Time[0]です。
flag=true とする。
}
return(flag)です。
}
//+------------------------------------------------------------------+
//| 新しいバーが表示されたらアクションを実行する。
//+------------------------------------------------------------------+
void EveryBar()
{
// Print("新しいバーが届きました!")
double MA[100]、CCI[100]、CCIclose[100]、StandDevi[100]。
int i,limit=ArraySize(CCI);
ダブルSL、TP
スリープ(_Sleep)。
SL = NormalizeDouble(Ask - StopLoss*Point, Digits)です。
TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)です。
for(i=0; i<limit; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);
}
// 新しい注文を出すのに十分な資金があるかどうかチェックする
if(AccountFreeMargin()<(1000*Lots))
{
Print("We have no money.フリーマージン = ", AccountFreeMargin());
return(0)です。
}
//=================================================================================
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
//----- すべてのオープンポジションに目を通す
for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{
//---- 位置の選択中にエラーが発生した場合、次の位置へ進む
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError()。
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
を続ける。
}
// 位置が現在のシンボルのために開かれていない場合、それはスキップされます。
if ( OrderSymbol() != Symbol() ) continue;
// MagicNumber が _MagicNumber と等しくない場合、スキップする。
// この位置
if ( OrderMagicNumber() != _MagicNumber ) continue;
//- BAYポジションが開いている場合。
if ( OrderType() == OP_BUY ) )
{
//---- CCIがライン190を下向きにクロスした場合
if (((CCIclose[2]>190) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2]) ).
{
//---- クローズ位置
if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 10, Green ) )
{
_GetLastError = GetLastError()。
Print("OrderCloseエラー# , _GetLastError );
Err=1です。
return(-1)です。
}
}
// シグナルが変化しなかった場合、終了 - 開放するには早すぎる。
//新しい位置
さもなくば
{ return(0); }.
}
//---- 売りポジションが開かれた場合。
if ( OrderType() == OP_SELL )
{
//---- CCIが上方のライン-190を越えたら。
if (((CCIclose[2]<-190) && (CCIclose[1]>=-300)) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2])))
{
//---- クローズ位置
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 10, Red ) )
{
_GetLastError = GetLastError()。
Print("OrderClose error # ", _GetLastError );
Err=2;
return(-1)です。
}
}
// シグナルが変化しなかった場合、終了 - 開放するには早すぎる。
// 新しい位置
else return(0);
}
}
//+------------------------------------------------------------------+
//| 実行がこのポイントに達した場合、開いているポジションはありません。
//| ポジションを開くことが可能かどうかをチェックします。
//+------------------------------------------------------------------+
スリープ(_Sleep)。
CCIがMACDを下から上へクロスした場合 //----。
SL = NormalizeDouble(Bid - StopLoss*Point, Digits)です。
TP = NormalizeDouble(Bid + TakeProfit*Point, Digits)です。
if ((CCI[1]>MA[リミット- MA_Per-1]) && (CCI[2]<MA[limit-MA_Per-2]))
{
//---- オープン BAY ポジション
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 5, SL, TP, "CCI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError()。
Print( "OrderSend OP_BUY error # ", _GetLastError );
Err=3。
return(-1)です。
}
return(0)です。
}
CCIがMACDを上から下までクロスした場合 //----。
SL = NormalizeDouble(Ask + StopLoss*Point, Digits)です。
TP = NormalizeDouble(Ask - TakeProfit*Point, Digits)です。
if ((CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>MA[limit-MA_Per-2]))
{
//----- 売りポジションをオープン
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 5, SL, TP, "CCI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError()。
Print("OrderSend OP_SELL error # ", _GetLastError );
Err=4;
return(-1)です。
}
return(0)です。
}
}
//+------------------------------------------------------------------+
//| 価格が変わるごとに計算を実行する|?
//+------------------------------------------------------------------+
void EveryTick()
{
int i;
if (MM==true)
{
if (AccountBalance()>(2*Deposit))LotA=2です。
if (AccountBalance()>(3*Deposit))LotA=3。
if (AccountBalance()>(4*Deposit))LotA=4です。
if (AccountBalance()>(5*Deposit))LotA=5。
if (AccountBalance()>(6*Deposit))LotA=6; if (AccountBalance()>(6*Deposit); LotA=6;
if (AccountBalance()>(7*Deposit))LotA=7。
if (AccountBalance()>(8*Deposit))LotA=8。
if (AccountBalance()>(9*Deposit))LotA=9。
if (AccountBalance()>(10*Deposit))LotA=10です。
if (AccountBalance()>(11*Deposit))LotA=11。
if (AccountBalance()>(12*Deposit))LotA=12です。
if (AccountBalance()>(13*Deposit))LotA=13。
if (AccountBalance()>(14*Deposit))LotA=14。
if (AccountBalance()>(15*Deposit))LotA=15。
if (AccountBalance()>(16*Deposit))LotA=16。
if (AccountBalance()>(17*Deposit))LotA=17。
if (AccountBalance()>(18*Deposit))LotA=18。
if (AccountBalance()>(19*Deposit))LotA=19。
if (AccountBalance()>(20*Deposit))LotA=20です。
}
int _GetLastError = 0, _OrdersTotal = OrdersTotal();
int z;
ダブルSL、TP
double MA[100]、CCI[100]、CCIclose[100]、StandDevi[100]。
int limit=ArraySize(CCI)。
for(i=0; i<limit; i++)
{
CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);
CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);
MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);
}
スイッチ(Err)
{
ケース1
for ( z=_OrdersTotal - 1; z >= 0; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError()。
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
を続ける。
}
if ( OrderSymbol() != Symbol() ) continue;
if ( OrderMagicNumber() != _MagicNumber ) continue;
if ( OrderType() == OP_BUY ) )
{
if (((CCIclose[2]>300) && (CCIclose[1]<=300) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2]) ))
{
if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )
{
_GetLastError = GetLastError()。
Print("CASE OrderClose error # , _GetLastError );
Err=1です。
return(-1)です。
}
else Err=0;
}
}
}
が壊れる。
//=============================================================================
の場合 2.
for ( z=_OrdersTotal - 1; z >= 0; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError()。
Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);
を続ける。
}
if ( OrderSymbol() != Symbol() ) continue;
if ( OrderMagicNumber() != _MagicNumber ) continue;
if ( OrderType() == OP_SELL )
{
if (((CCIclose[2]<-300) && (CCIclose[1]>=-300) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2])))
{
if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red ) )
{
_GetLastError = GetLastError()。
Print("CASE OrderClose error # ", _GetLastError );
Err=2;
return(-1)です。
}
else Err=0;
}
}
}
が壊れる。
//==============================================================================
ケース 3.
SL = NormalizeDouble(Bid - StopLoss*Point, Digits)です。
TP = NormalizeDouble(Bid + TakeProfit*Point, Digits)です。
if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 7, SL, TP, "AI_test_buy", _MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError()。
Print( "CASE OrderSend OP_BUY error # ", _GetLastError );
Err=3。
return(-1)です。
}
else Err=0;
が壊れる。
//===================================================================================
ケース 4.
SL = NormalizeDouble(Ask + StopLoss*Point, Digits)です。
TP = NormalizeDouble(Ask - TakeProfit*Point, Digits)です。
if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 7, SL, TP, "AI_test_close", _MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError()。
Print("CASE OrderSend OP_SELL error # ", _GetLastError );
Err=4;
return(-1)です。
}
else Err=0;
が壊れる。
}
}
クロスだけでなく、ローソクのCLOSEで注文が開くようにするEAを紹介します。
注文の開封方法を教えてほしい。
また、このティックでバーが閉じることをどうやって知るつもりなのでしょうか?新しいバーの 開店によってかもしれませんね。
ボタンSRCでコードが挿入されます