MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 99 1...9293949596979899100101102103104105106...1953 新しいコメント Andrei Sokolov 2017.01.29 18:40 #981 ドラツチこのようなパネルはどのように作るのですか? Vitaly Muzichenko 2017.01.29 19:05 #982 Andrey Sokolov: ドラツチこのようなパネルはどのように作るのですか? kodobaseの例を取ってやり直すと、あらゆるテイストのパネルを持つアドバイザーがたくさんいます。背景から 始まる Artyom Trishkin 2017.01.29 19:07 #983 Andrey Sokolov: ドラツチこのようなパネルはどのように作るのですか? グラフィカルなオブジェクトで Andrei Sokolov 2017.01.29 20:13 #984 ヴィタリー・ムジチェンコ、アルチョム・トリシキン ありがとうございました。 Artyom Trishkin 2017.01.29 20:17 #985 Andrey Sokolov:ヴィタリー・ムジチェンコ、アルチョム・トリシキン ありがとうございました。 エヌズト Artyom Trishkin 2017.01.30 02:50 #986 trader781:テスターでも負けて、マーチンゲールで別の豚を書き続ける、そうでなければどうやって大鹿を育てろというのだ。現時点では、前の注文を閉じた後に次の注文を開くことができるようにするための、望ましいパラメータがあります。2つのシナリオがあります。1)値が真 である場合命令を出す プロセス了い と開き直る2) falseの場合注文を開くプロセス閉じるを実行し、ExpertRemoveを実行します。問題は、この2つの条件は互いに排他的であるにもかかわらず、1つのExpert Advisorで組み合わせなければならないことです。1) スタート時に値が設定されている2) 入力・処理条件に値が設定され、処理を受け付けた場合(trueならopen)3) 閉じた後、falseを設定する もし、そういうことに興味のある方がいらっしゃれば、私の変種を聞いていただければと思います。 ロジックに問題があるのです。 単純なことです。命令を出す注文を処理する注文を閉じる状態を確認し...trueなら、ExpertRemove()もう一度 Vitaly Muzichenko 2017.01.30 04:27 #987 Artyom Trishkin: 私たちは、論理に問題があるのです。 すべてがシンプルです。命令を出す注文を処理する注文を閉じるを確認し、...trueなら、ExpertRemove()を繰り返して 本当ならキャベツを切らないといけないのに、茂みに行ってはいけないなんて、何かが間違っているような気がするのですが......。) Artyom Trishkin 2017.01.30 04:44 #988 Vitaly Muzichenko: 何かおかしいな、本当ならキャベツを切っているはずなのに、茂みの中にいるなんて) 間違っている。偽り。テストが何なのかわからない...。くそ、まだ理屈はあるんだ。それとも、おしゃべりしたいだけ? Michail_David 2017.01.30 05:28 #989 アドバイスをお願いします。Expert Advisor はターミナルで注文を開きません。チャートによると、注文はオープンされるはずです。しかし、彼らはそうではありません。コードを添付します。 double Lots=NormalizeDouble((AccountFreeMargin()/100*Percent)/MarketInfo(Symbol(),MODE_MARGINREQUIRED),1);//determine number of lots double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,0);// 現在のバーのMACDパラメータを表示します。 double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,1);// 前のバーの MACD パラメータ。 double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,2);// メインラインのMACDパラメータを2本分オフセットしたもの。 double StopLoss=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,0);// 現在のバーのParabolicSARパラメータによるトレーリングストップパラメータ double Previous_StopLoss=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,1);//ParabolicSAR パラメータによる前バーでの StopLoss パラメータ。 double PSARCurrent=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,0);//parameters 現在のバーのParabolicSAR double PSARPrevious=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,1);//ParabolicSAR parameters of the previous bar//+------------------------------------------------------------------+//| エキスパートティック機能|//+------------------------------------------------------------------+ void OnTick(){ static datetime New_Time=TimeCurrent();// 現在のバーの時刻 bool New_Bar=false; // 新しいバーをフラグにする。 int ticket,total,cnt;//---------------------------------------------------------------------------{ New_Bar=false; // 新しいバーを表示しない。 if(Time[0]==New_Time) // 時間を比較する。{ New_Bar=true; // New_Barが捕まる if(New_Bar==false) // バーが新しいものでない場合 return; // ...そして終了 }} total=OrdersTotal();//注文数の決定 if(total<1){//--未決済の注文はありません if((AccountFreeMargin()/100*Percent)<MarketInfo(Symbol(),MODE_MARGINREQUIRED)*(MarketInfo(Symbol(),MODE_MINLOT))//最低ロットの開設資金の有無の確認{ Print("資金が足りません。自由資金=",AccountFreeMargin()); を返します。} //--ロングポジションの開始(買い)の条件 if((MacdCurrent>0 && MacdPrevious1<=0 && MacdPrevious2<0))&& PSARCurrent<iOpen(NULL,0,1))です。{ ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,0,NULL,MAGICNUMBER,0,Green)。 if(ticket>0)//オープンポジションのチェック{ if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order open : ",OrderOpenPrice()); さもなくば Print("BUY order open error : ",GetLastError()); を返します。}} //--ショートポジション(売り)を建てるための条件 if((MacdCurrent<0 && MacdPrevious1>=0 && MacdPrevious2>0))&& PSARCurrent>iOpen(NULL,0,1))です。{ ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,0,NULL,MAGICNUMBER,0,赤)。 if(ticket>0)//オープンポジションのチェック{ if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order open : ",OrderOpenPrice()); さもなくば Print("Error opening SELL order : ",GetLastError()); を返します。}}//--- "未決済注文なし "ブロックを抜ける }//--市場に正しく参入することは重要だが、市場から正しく退出することはもっと重要である。 for(cnt=0;cnt<total;cnt++){ if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) if(OrderMagicNumber()==MAGICNUMBER && // オーダーのマジックナンバーをチェックする) OrderSymbol()==Symbol()) // 注文記号を確認する{//--- ロングポジションを開設 if(OrderType()==OP_BUY){//--- 閉鎖しなければならないのか? if((MacdCurrent<0 && MacdPrevious1>=0 && MacdPrevious2>0))&& PSARCurrent>iOpen(NULL,0,1))です。{//--- 注文の終了と終了 if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet)) Print("OrderCloseエラー",GetLastError()); を返します。}//------------------ StopLossによる注文の変更 if(StopLoss>Previous_StopLoss && StopLoss<iOpen(NULL,0,0)) if(!OrderModify(OrderTicket(),OrderOpenPrice(),Previous_StopLoss,0,0,Blue)) Print(" 注文修正エラー。エラーコード=",GetLastError()); さもなくば Print("注文のストップロス価格は正常に変更されました。") を返します。}} else // ショートカット if(オーダータイプ()==OP_SELL){//--- 閉鎖しなければならないのか? if((MacdCurrent>0 && MacdPrevious1<=0 && MacdPrevious2<0))&& PSARCurrent<iOpen(NULL,0,1))です。{//--- 注文の終了と終了 if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet)) Print("OrderCloseエラー",GetLastError()); を返します。}//-----------------StopLossによる注文の変更 if(StopLoss<Previous_StopLoss && StopLoss>iOpen(NULL,0,0)) if(!OrderModify(OrderTicket(),OrderOpenPrice(),Previous_StopLoss,0,0,Blue)) Print("注文修正エラー。エラーコード=",GetLastError()); さもなくば Print("注文のストップロス価格は正常に変更されました。") を返します。}}} //------------------------------------------------------------------------------------------------------- Any questions from newcomers 初心者の方からの質問 MQL4 MT4 MetaTrader Questions from Beginners MQL4 Artyom Trishkin 2017.01.30 07:36 #990 trader781:ええ、もっと単純な話です。これを予備としておいて、次のようにしたらどうだろう。 を確認し、...trueの場合、ボットは最小限の動作で停止します。つまり、どのようにして入力を遮断し、次の動作をさせるか。 return(0); が、これは望ましくない - 他に何も処理できないからだ。 1...9293949596979899100101102103104105106...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
ドラツチこのようなパネルはどのように作るのですか?
ドラツチこのようなパネルはどのように作るのですか?
ドラツチこのようなパネルはどのように作るのですか?
ヴィタリー・ムジチェンコ、アルチョム・トリシキン ありがとうございました。
テスターでも負けて、マーチンゲールで別の豚を書き続ける、そうでなければどうやって大鹿を育てろというのだ。
現時点では、前の注文を閉じた後に次の注文を開くことができるようにするための、望ましいパラメータがあります。
2つのシナリオがあります。
1)値が真 である場合
命令を出す
プロセス
了い
と開き直る
2) falseの場合
注文を開く
プロセス
閉じる
を実行し、ExpertRemoveを実行します。
問題は、この2つの条件は互いに排他的であるにもかかわらず、1つのExpert Advisorで組み合わせなければならないことです。
1) スタート時に値が設定されている
2) 入力・処理条件に値が設定され、処理を受け付けた場合(trueならopen)
3) 閉じた後、falseを設定する
もし、そういうことに興味のある方がいらっしゃれば、私の変種を聞いていただければと思います。単純なことです。
私たちは、論理に問題があるのです。
すべてがシンプルです。
何かおかしいな、本当ならキャベツを切っているはずなのに、茂みの中にいるなんて)
アドバイスをお願いします。Expert Advisor はターミナルで注文を開きません。チャートによると、注文はオープンされるはずです。しかし、彼らはそうではありません。コードを添付します。
double Lots=NormalizeDouble((AccountFreeMargin()/100*Percent)/MarketInfo(Symbol(),MODE_MARGINREQUIRED),1);//determine number of lots
double MacdCurrent=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,0);// 現在のバーのMACDパラメータを表示します。
double MacdPrevious1=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,1);// 前のバーの MACD パラメータ。
double MacdPrevious2=iMACD(NULL,0,Fast_EMA_Period,Slow_EMA_Period,Signal_Period,PRICE_MEDIAN,MODE_MAIN,2);// メインラインのMACDパラメータを2本分オフセットしたもの。
double StopLoss=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,0);// 現在のバーのParabolicSARパラメータによるトレーリングストップパラメータ
double Previous_StopLoss=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,1);//ParabolicSAR パラメータによる前バーでの StopLoss パラメータ。
double PSARCurrent=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,0);//parameters 現在のバーのParabolicSAR
double PSARPrevious=iSAR(NULL,Period(),Step_PSAR,Maximum_PSAR,1);//ParabolicSAR parameters of the previous bar
//+------------------------------------------------------------------+
//| エキスパートティック機能|
//+------------------------------------------------------------------+
void OnTick()
{
static datetime New_Time=TimeCurrent();// 現在のバーの時刻
bool New_Bar=false; // 新しいバーをフラグにする。
int ticket,total,cnt;
//---------------------------------------------------------------------------
{
New_Bar=false; // 新しいバーを表示しない。
if(Time[0]==New_Time) // 時間を比較する。
{
New_Bar=true; // New_Barが捕まる
if(New_Bar==false) // バーが新しいものでない場合
return; // ...そして終了
}
}
total=OrdersTotal();//注文数の決定
if(total<1)
{
//--未決済の注文はありません
if((AccountFreeMargin()/100*Percent)<MarketInfo(Symbol(),MODE_MARGINREQUIRED)*(MarketInfo(Symbol(),MODE_MINLOT))
//最低ロットの開設資金の有無の確認
{
Print("資金が足りません。自由資金=",AccountFreeMargin());
を返します。
}
//--ロングポジションの開始(買い)の条件
if((MacdCurrent>0 && MacdPrevious1<=0 && MacdPrevious2<0))
&&
PSARCurrent<iOpen(NULL,0,1))です。
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,StopLoss,0,NULL,MAGICNUMBER,0,Green)。
if(ticket>0)//オープンポジションのチェック
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("BUY order open : ",OrderOpenPrice());
さもなくば
Print("BUY order open error : ",GetLastError());
を返します。
}
}
//--ショートポジション(売り)を建てるための条件
if((MacdCurrent<0 && MacdPrevious1>=0 && MacdPrevious2>0))
&&
PSARCurrent>iOpen(NULL,0,1))です。
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,StopLoss,0,NULL,MAGICNUMBER,0,赤)。
if(ticket>0)//オープンポジションのチェック
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL order open : ",OrderOpenPrice());
さもなくば
Print("Error opening SELL order : ",GetLastError());
を返します。
}
}
//--- "未決済注文なし "ブロックを抜ける
}
//--市場に正しく参入することは重要だが、市場から正しく退出することはもっと重要である。
for(cnt=0;cnt<total;cnt++)
{
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
if(OrderMagicNumber()==MAGICNUMBER && // オーダーのマジックナンバーをチェックする)
OrderSymbol()==Symbol()) // 注文記号を確認する
{
//--- ロングポジションを開設
if(OrderType()==OP_BUY)
{
//--- 閉鎖しなければならないのか?
if((MacdCurrent<0 && MacdPrevious1>=0 && MacdPrevious2>0))
&&
PSARCurrent>iOpen(NULL,0,1))です。
{
//--- 注文の終了と終了
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
Print("OrderCloseエラー",GetLastError());
を返します。
}
//------------------ StopLossによる注文の変更
if(StopLoss>Previous_StopLoss && StopLoss<iOpen(NULL,0,0))
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Previous_StopLoss,0,0,Blue))
Print(" 注文修正エラー。エラーコード=",GetLastError());
さもなくば
Print("注文のストップロス価格は正常に変更されました。")
を返します。
}
}
else // ショートカット
if(オーダータイプ()==OP_SELL)
{
//--- 閉鎖しなければならないのか?
if((MacdCurrent>0 && MacdPrevious1<=0 && MacdPrevious2<0))
&&
PSARCurrent<iOpen(NULL,0,1))です。
{
//--- 注文の終了と終了
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
Print("OrderCloseエラー",GetLastError());
を返します。
}
//-----------------StopLossによる注文の変更
if(StopLoss<Previous_StopLoss && StopLoss>iOpen(NULL,0,0))
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Previous_StopLoss,0,0,Blue))
Print("注文修正エラー。エラーコード=",GetLastError());
さもなくば
Print("注文のストップロス価格は正常に変更されました。")
を返します。
}
}
}
//-------------------------------------------------------------------------------------------------------
ええ、もっと単純な話です。
これを予備としておいて、次のようにしたらどうだろう。
を確認し、...つまり、どのようにして入力を遮断し、次の動作をさせるか。