そして、それを「漫画」にしよう(多通貨化) - ページ 6 123456789101112 新しいコメント ALex 2009.07.22 13:26 #51 Swan >> : エラー130をずっと繰り返している。 StopLevelは、StopLossとEnterのために、チェックする必要があります。 然も は、一番高いものを選ぶべきなのでしょうか? -130 おそらく、保留中の注文を設定しようとして、価格が上下に行ったため)コードの中で、Marketlevelでコメントされていない行があります... これは、将来の価格の追跡なので、このエラーはありません)。 -OrderOpenPriceの最安値または最高値(ストップ) 買いの場合、H4の0キャンドルと1キャンドルの最安値...と売りの最高値を更新しました・・・。一般的にストップ安/高 Aleksey Lebedev 2009.07.22 13:48 #52 ALex2008 >> : -130おそらく保留中の注文を設定しようとしたため、価格が高くなったり低くなったり)コード内の行があるMarketlevelでコメントされていない...これは、このエラーがないように、将来の価格の追跡です)。 -ストップはOrderOpenPriceの安値または高値) 買いの場合、H4の安値は0本と1本のローソク足を選択します...と売りの最高値を更新しました・・・。一般に、ストップ安・ストップ高は それを修正するために、今度は買いの最高値安値と売りの最低値高値に行く。 または次のようになります。 StopLoss=MathMin(b0,b1); StopLoss=MathMax(s0,s1); ALex 2009.07.22 14:06 #53 Swan >> : 現在、買いでは最大の安値が、売りでは最小の高値が選ばれています。 論理的にはそうです、大丈夫です!)これがストップの選択です(2つの選択肢のうち、pt.で最も小さいものを選びます) 例 でも、あなたのバージョンはもっとシンプルで良いですよ...。訂正しておきますが、逆です)ありがとうございました。 StopLoss=MathMax(b0,b1); StopLoss=MathMin(s0,s1); 5ページ目のコードを修正しました。 Aleksey Lebedev 2009.07.22 15:04 #54 ALex2008 >> : 論理的にはそうです、大丈夫です!)これがストップの選択肢です(2つの選択肢のうち、pt.で最も小さいものを選んでいます) タキ(一番小さいのを買う) 最初のバーでトロールするのと、一番大きなバーでトロールするのとでは、ロジックが違うからです。) StopLevel。 Enterを変更することができます。 void UpTrend() { if(iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0 && iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0) { DellAllOrders(); Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if( Enter-Ask< StopLevel) Enter=Ask+ StopLevel; OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Enter+ Profit, 0, 0,0, Green); } } または注文を開始する void UpTrend() { if(iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0 && iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0) { DellAllOrders(); Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if( Enter-Ask< StopLevel) OrderSend(Symbol(), OP_BUY, 0.1, Ask, 0, 0, Ask+ Profit, 0, 0,0, Green); else OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Enter+ Profit, 0, 0,0, Green); } } とか考える) Victor Nikolaev 2009.07.22 15:13 #55 Swan писал(а)>> 一番小さいのを買うために滝) 最高値で買って、最初のバーでトラリピした方がいいというのは、理屈が違いますね。) StopLevelで。 Enterを変更することができます。 または注文を開始する または他のものを思いつくかもしれません)。 オープンプライスは、BidまたはAskからさらにStopLevelで指定する必要があります。建値からテイクポジションとストップポジションを取りますが、これもStopLevelに近づかないようにします。しかし、それらのために、我々は利益またはドローダウンによってクローズブロックを使用することがあります。 ALex 2009.07.22 15:31 #56 Swan >> : ...イミホは、最大で最初のバーをトロールするのが良い、別のロジック :) この方法でもやったが、テスト結果は今の停止の方が良い) ALex 2009.07.22 15:58 #57 ストッププレイを修正しました... //-------Поиск входа для установки ордеров, удаление старых ордеров и установка новых void UpTrend(){ if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0) && (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0)){ DellAllOrders(); Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if(Ask<= Enter- StopLevel){ RefreshRates(); OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Enter+ Profit, 0, 0,0, Green);} } } void DownTrend(){ if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) >= 0) && (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) < 0)){ DellAllOrders(); Enter=iLow(NULL,PERIOD_H4,1)-10*Point; if(Bid>= Enter+ StopLevel){ RefreshRates(); OrderSend(Symbol(), OP_SELLSTOP, 0.1, Enter, 0, 0, Enter- Profit, 0, 0,0, Green);} } } //-------Вычисление стопа и утановка void SetStop(){ RefreshRates(); b0=iLow(NULL,PERIOD_H4,0)-10*Point; b1=iLow(NULL,PERIOD_H4,1)-10*Point; s0=iHigh(NULL,PERIOD_H4,0)+(Ask-Bid)+10*Point; s1=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if( Type==0){ StopLoss=MathMax( b0, b1);//Функция возвращает максимальное из двух числовых значений if(Bid- StopLoss< StopLevel) StopLoss=MathMin( b0, b1); else OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); } if( Type==1){ StopLoss=MathMin( s0, s1);//Функция возвращает минимальное из двух числовых значений if( StopLoss-Ask< StopLevel) StopLoss=MathMax( s0, s1); else OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); } } Swan >> : ...または、すぐに注文を開始することができます。 (未決済注文でエントリーした方がよっぽど安全です) そうしないと、証券会社やnofarmsに非常に遠くまで開かれてしまいます...))。 >> コードをいじった。 Aleksey Lebedev 2009.07.22 17:19 #58 ALex2008 >> : ストップ高を修正... (ペンディングオーダーを使う方が良い) そうしないと、DCが何かを表示したり、nofarmsが非常に遠くまで開いてしまうからだ...)) >> コードを修正しました。 古いバグの修正、新しいバグの追加 :D こちらも修正済み) //+------------------------------------------------------------------+ //| CandyLite.mq4 | //| Ш.Александр.В | //| shestovav@gmail.com | //+------------------------------------------------------------------+ #property copyright "Ш.Александр.В" #property link "shestovav@gmail.com" #include <stdlib.mqh> extern double Profit = 3000; int Type, Ticket; double Stop, StopLevel, b0, b1, s0, s1, StopLoss, Enter; bool dwn, up, mod; int init(){ Profit*=Point; return(0); } int deinit() { return(0); } int start() { StopLevel=Point*MarketInfo(Symbol(),MODE_STOPLEVEL); // вычисление стоплевел //Point* if(! WorkOrders()){ UpTrend(); DownTrend(); } if( WorkOrders()){ if (( Type<=1)&& ( Stop==0)) SetStop(); if (( Type==1)||( Type==5)) UpTrend(); if (( Type==0)||( Type==4)) DownTrend(); } return(0); } //-------Поиск входа для установки ордеров, удаление старых ордеров и установка новых void UpTrend(){ if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) <= 0) && (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) > 0)){ DellAllOrders(); Enter=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if(Ask< Enter- StopLevel+0.5*Point){ OrderSend(Symbol(), OP_BUYSTOP, 0.1, Enter, 0, 0, Enter+ Profit, 0, 0,0, Green);} } } void DownTrend(){ if((iOpen(NULL,PERIOD_H4,1) - iClose(NULL,PERIOD_H4,1) >= 0) && (iOpen(NULL,PERIOD_H4,2) - iClose(NULL,PERIOD_H4,2) < 0)){ DellAllOrders(); Enter=iLow(NULL,PERIOD_H4,1)-10*Point; if(Bid> Enter+ StopLevel-0.5*Point){ OrderSend(Symbol(), OP_SELLSTOP, 0.1, Enter, 0, 0, Enter- Profit, 0, 0,0, Green);} } } //-------Вычисление стопа и установка void SetStop(){ RefreshRates(); b0=iLow(NULL,PERIOD_H4,0)-10*Point; b1=iLow(NULL,PERIOD_H4,1)-10*Point; s0=iHigh(NULL,PERIOD_H4,0)+(Ask-Bid)+10*Point; s1=iHigh(NULL,PERIOD_H4,1)+(Ask-Bid)+10*Point; if( Type==0){ StopLoss=MathMax( b0, b1);//Функция возвращает максимальное из двух числовых значений if(Bid- StopLoss< StopLevel-0.5*Point) StopLoss=MathMin( b0, b1); if(Bid- StopLoss> StopLevel-0.5*Point)//можно попробовать убрать строку OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); } if( Type==1){ StopLoss=MathMin( s0, s1);//Функция возвращает минимальное из двух числовых значений if( StopLoss-Ask< StopLevel-0.5*Point) StopLoss=MathMax( s0, s1); if( StopLoss-Ask> StopLevel-0.5*Point)//можно попробовать убрать строку OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); } } //-------Удаление всех ордеров, открытых и отложенных void DellAllOrders(){ if( WorkOrders()){ if( Type<=1)OrderClose( Ticket,OrderLots(),OrderClosePrice(),10); else OrderDelete( Ticket);} } //-------Поиск ордеров bool WorkOrders(){ for (int i=OrdersTotal()-1; i>=0; i--){ if (!OrderSelect( i, SELECT_BY_POS)) continue; if (OrderSymbol()!=Symbol()) continue; Type = OrderType(); Ticket=OrderTicket(); Stop =OrderStopLoss(); return(true);} return(false); } ALex 2009.07.22 17:21 #59 Swan >> : 古いバグの修正、新しいバグの追加 :D 何で 0.5*Point また、MarketInfo()はdouble型を返しますが、なぜPointに変換するのでしょうか・・・? それも...。の2つの条件があります。 if(Bid- StopLoss< StopLevel-0.5*Point) StopLoss=MathMin( b0, b1); if(Bid- StopLoss> StopLevel-0.5*Point)//можно попробовать убрать строку 気づいたのはそれだけです。のために変更されたことを説明した方が、今後のために心に留めておけるからです)。 Aleksey Lebedev 2009.07.22 18:09 #60 ALex2008 >> : よくわからないけど...) また、MarketInfo()はdouble型を返しますが、なぜPointに変換するのでしょうか・・・? こちらも...。 0.5*Pointはデルタなので、0.7に変換することもできます :) 実数の比較をご覧ください。 は、おそらくなくても正常に動作します。) というエラーが発生しました。 MarketInfo(Symbol(),MODE_STOPLEVEL) をPointに乗じた値をpips単位で返します。 でした。 if(Bid- StopLoss< StopLevel) StopLoss=MathMin( b0, b1); else OrderModify(OrderTicket(),OrderOpenPrice(), StopLoss,OrderTakeProfit(),0,Red); trueの場合、StopLossに新しい値が割り当てられます。 それ以外の場合は、順序が変更されます。 エラーは出ないが、クロスを脱ぐかズボンを履かなければならない) 123456789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
エラー130をずっと繰り返している。
StopLevelは、StopLossとEnterのために、チェックする必要があります。
然も
は、一番高いものを選ぶべきなのでしょうか?
-130 おそらく、保留中の注文を設定しようとして、価格が上下に行ったため)コードの中で、Marketlevelでコメントされていない行があります... これは、将来の価格の追跡なので、このエラーはありません)。
-OrderOpenPriceの最安値または最高値(ストップ) 買いの場合、H4の0キャンドルと1キャンドルの最安値...と売りの最高値を更新しました・・・。一般的にストップ安/高
-130おそらく保留中の注文を設定しようとしたため、価格が高くなったり低くなったり)コード内の行があるMarketlevelでコメントされていない...これは、このエラーがないように、将来の価格の追跡です)。
-ストップはOrderOpenPriceの安値または高値) 買いの場合、H4の安値は0本と1本のローソク足を選択します...と売りの最高値を更新しました・・・。一般に、ストップ安・ストップ高は
それを修正するために、今度は買いの最高値安値と売りの最低値高値に行く。
または次のようになります。
現在、買いでは最大の安値が、売りでは最小の高値が選ばれています。
論理的にはそうです、大丈夫です!)これがストップの選択です(2つの選択肢のうち、pt.で最も小さいものを選びます)
例
でも、あなたのバージョンはもっとシンプルで良いですよ...。訂正しておきますが、逆です)ありがとうございました。5ページ目のコードを修正しました。
論理的にはそうです、大丈夫です!)これがストップの選択肢です(2つの選択肢のうち、pt.で最も小さいものを選んでいます)
タキ(一番小さいのを買う)
最初のバーでトロールするのと、一番大きなバーでトロールするのとでは、ロジックが違うからです。)
StopLevel。
Enterを変更することができます。
または注文を開始する
とか考える)
一番小さいのを買うために滝)
最高値で買って、最初のバーでトラリピした方がいいというのは、理屈が違いますね。)
StopLevelで。
Enterを変更することができます。
または注文を開始する
または他のものを思いつくかもしれません)。
オープンプライスは、BidまたはAskからさらにStopLevelで指定する必要があります。建値からテイクポジションとストップポジションを取りますが、これもStopLevelに近づかないようにします。しかし、それらのために、我々は利益またはドローダウンによってクローズブロックを使用することがあります。
...イミホは、最大で最初のバーをトロールするのが良い、別のロジック :)
この方法でもやったが、テスト結果は今の停止の方が良い)
ストッププレイを修正しました...
...または、すぐに注文を開始することができます。
(未決済注文でエントリーした方がよっぽど安全です) そうしないと、証券会社やnofarmsに非常に遠くまで開かれてしまいます...))。
>> コードをいじった。
ストップ高を修正...
(ペンディングオーダーを使う方が良い) そうしないと、DCが何かを表示したり、nofarmsが非常に遠くまで開いてしまうからだ...))
>> コードを修正しました。
古いバグの修正、新しいバグの追加 :D
こちらも修正済み)
古いバグの修正、新しいバグの追加 :D
何で
また、MarketInfo()はdouble型を返しますが、なぜPointに変換するのでしょうか・・・?
それも...。の2つの条件があります。
気づいたのはそれだけです。のために変更されたことを説明した方が、今後のために心に留めておけるからです)。
よくわからないけど...)
また、MarketInfo()はdouble型を返しますが、なぜPointに変換するのでしょうか・・・?
こちらも...。
0.5*Pointはデルタなので、0.7に変換することもできます :)
実数の比較をご覧ください。
は、おそらくなくても正常に動作します。)
というエラーが発生しました。
をPointに乗じた値をpips単位で返します。
でした。
trueの場合、StopLossに新しい値が割り当てられます。
それ以外の場合は、順序が変更されます。
エラーは出ないが、クロスを脱ぐかズボンを履かなければならない)