σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyالمسارات
Ctrl K
AO
+1.2k متعلّم
تسجيل الدخولانضم ↗
المسارات
AO
+1.2k متعلّم
تسجيل الدخول
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
مسار Python›الوحدة 1 · أساسيات Python للمحللين الكميين›الموضوع 1.7·~30 دمبتدئ

حلقات while وbreak وcontinue

الموضع في المسارالوحدة 1 من 11 · الموضوع 7 من 33
1.7 حلقات while وbreak وcontinue
—درجة المختبر— / 100إجمالي XP—التتابع—

التكرار ما دام الشرط متحققًا

حلقة while تفحص شرطًا قبل كل دورة وتنفّذ كتلتها ما دام الشرط True. استخدمها عندما لا تعرف مسبقًا عدد الدورات اللازمة: تنصيف أمر حتى يصبح صغيرًا بما يكفي، أو الانتظار حتى يتجاوز سعر مستوى ما، أو تنمية رصيد حتى يبلغ هدفًا. يجب أن يغيّر شيء داخل الكتلة الشرط، وإلا لن تنتهي الحلقة أبدًا.

# Halve an order until it is small enough to trade at once
quantity, limit = 1000, 100
steps = 0
while quantity > limit:
    quantity = quantity / 2
    steps += 1
print(steps, quantity)  # 4 62.5

for أم while؟

استخدم for عندما تكون لديك العناصر أو تعرف عددها: فهي لا تستطيع العمل إلى الأبد. واستخدم while عندما تتوقف نقطة الانتهاء على ما يحدث أثناء الحلقة. اختبار جيد: إن استطعت قول «لكل واحد من هؤلاء» فاكتب for، وإن قلت «حتى يصبح هذا صحيحًا» فاكتب while.

تأكد من أن الحلقة تستطيع الانتهاءقبل تشغيل حلقة while تحقق من ثلاثة أشياء: الشرط يستخدم متغيرًا تغيّره الحلقة، والتغيير يحدث في كل دورة، ويقرّب الشرط من أن يصبح False. وإذا طالت حلقة أكثر من اللازم هنا فإنها تتوقف بعد 10 ثوانٍ.

break: اترك الحلقة فورًا

ينهي break الحلقة فورًا ويكمل بالسطر الذي يليها. إنه الطريقة للتوقف بمجرد حصولك على الجواب، مثل أول سعر يتجاوز حدًا. هنا تمرّ الحلقة على المواضع بمؤشر ترفعه بنفسها.

# break leaves the loop at once
prices = [184.25, 184.5, 186.0, 185.0]
limit = 185.5
index = 0
while index < len(prices):
    if prices[index] > limit:
        print("breach at", index)  # breach at 2
        break
    index += 1

continue: انتقل إلى الدورة التالية

يتخطى continue بقية الدورة الحالية ويعود إلى الشرط. وهو مفيد لتجاهل البيانات السيئة دون وضع العمل الحقيقي داخل if متداخلة. في حلقة while غيّر متغير الحلقة قبل continue، وإلا ظلت الحلقة تصادف العنصر نفسه إلى الأبد.

# continue skips the rest of the pass; step first, or it never moves on
fills = [100, -5, 250, 0, 75]
total = 0
index = 0
while index < len(fills):
    value = fills[index]
    index += 1
    if value <= 0:
        continue
    total += value
print(total)  # 425

حلقات تبحث أو تتقارب

كثير من مهام التحليل الكمّي من نوع «واصل حتى»: رسملة حتى بلوغ هدف، أو تحسين تقدير حتى يتوقف عن التغير، أو إعادة المحاولة حتى ينجح طلب. والشكل while True: مع break في المنتصف شائع عندما يكون اختبار الخروج في وسط العمل.

# How many years until 10,000 grows to 15,000 at 7% a year?
balance, target, rate = 10_000, 15_000, 0.07
years = 0
while balance < target:
    balance = balance * (1 + rate)
    years += 1
print(years)  # 6

# while True + break: the exit test sits in the middle
attempt = 0
while True:
    attempt += 1
    if attempt * 25 >= 100:
        break
print(attempt)  # 4
  • يستخدم الشرط متغيرًا تغيّره الحلقة.
  • يحدث التغيير في كل دورة حتى قبل continue.
  • استخدم break فور معرفة الجواب.

التالي: تعريف الدوال واستدعاؤها، لإعطاء كتلة شيفرة اسمًا وإعادة استخدامها.

المختبر: ما الذي يُقيَّم

  • احسب عدد تنصيفات الأمر باستخدام halving_steps25 نقطة
  • أوجد أول سعر يتجاوز حدًّا باستخدام first_breach25 نقطة
  • اجمع التنفيذات الصالحة حتى علامة النهاية باستخدام sum_until_zero25 نقطة
  • نمِّ رصيدًا حتى بلوغ هدف باستخدام years_to_target25 نقطة
المستكشف · lab-7-1
▾ lab-7-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-7-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

هل تريد إعادة ضبط هذا الموضوع؟

سيعود كل ما في lab-7-1 إلى الملفات الابتدائية وستُمسح الطرفية. ستفقد حلّك الحالي ولا يمكن التراجع عن ذلك.

سيُعاد ضبطه
  • main.py ← الشيفرة الابتدائية
  • سجل الطرفية ومخرجات الاختبارات
  • التغييرات غير المُرسلة
سيُحتفظ به
  • أفضل درجة في المختبر
  • نقاط XP والتتابع
  • تقدّم المحاضرة والملاحظات

سجّل الدخول لتشغيل الكود الخاص بك.

قراءة كل المحاضرات مجانية. أنشئ حسابًا أو سجّل الدخول لتشغيل الكود وتنفيذ الاختبارات وتسليم هذا المختبر.

  • بيئة تطوير داخل المتصفح مع طرفية bash — لا حاجة لتثبيت أي شيء
  • تصحيح فوري ونقاط خبرة ومكانك في المسار
إنشاء حسابتسجيل الدخول
أو
المتابعة عبر GitHub